5 #ifndef V8_MAGLEV_MAGLEV_IR_H_
6 #define V8_MAGLEV_MAGLEV_IR_H_
52 #ifdef V8_ENABLE_EXPERIMENTAL_UNDEFINED_DOUBLE
53 #define IF_UD(Macro, ...) Macro(__VA_ARGS__)
55 #define IF_UD(Macro, ...)
66 class ProcessingState;
67 class MaglevAssembler;
68 class MaglevCodeGenState;
69 class MaglevCompilationUnit;
70 class MaglevGraphLabeller;
71 class MaglevVregAllocationState;
72 class CompactInterpreterFrameState;
73 class MergePointInterpreterFrameState;
74 class ExceptionHandlerInfo;
83 #define GENERIC_OPERATIONS_NODE_LIST(V) \
89 V(GenericExponentiate) \
90 V(GenericBitwiseAnd) \
92 V(GenericBitwiseXor) \
94 V(GenericShiftRight) \
95 V(GenericShiftRightLogical) \
96 V(GenericBitwiseNot) \
101 V(GenericStrictEqual) \
103 V(GenericLessThanOrEqual) \
104 V(GenericGreaterThan) \
105 V(GenericGreaterThanOrEqual)
107 #define INT32_OPERATIONS_NODE_LIST(V) \
108 V(Int32AbsWithOverflow) \
109 V(Int32AddWithOverflow) \
110 V(Int32SubtractWithOverflow) \
111 V(Int32MultiplyWithOverflow) \
112 V(Int32DivideWithOverflow) \
113 V(Int32ModulusWithOverflow) \
119 V(Int32ShiftRightLogical) \
121 V(Int32NegateWithOverflow) \
122 V(Int32IncrementWithOverflow) \
123 V(Int32DecrementWithOverflow) \
127 #define FLOAT64_OPERATIONS_NODE_LIST(V) \
133 V(Float64Exponentiate) \
138 V(Float64ToBoolean) \
139 V(Float64Ieee754Unary)
141 #define SMI_OPERATIONS_NODE_LIST(V) \
142 V(CheckedSmiIncrement) \
143 V(CheckedSmiDecrement)
145 #define CONSTANT_VALUE_NODE_LIST(V) \
147 V(ExternalConstant) \
154 V(TaggedIndexConstant) \
157 #define INLINE_BUILTIN_NODE_LIST(V) \
158 V(BuiltinStringFromCharCode) \
159 V(BuiltinStringPrototypeCharCodeOrCodePointAt) \
160 V(BuiltinSeqOneByteStringCharCodeAt)
162 #define TURBOLEV_VALUE_NODE_LIST(V) \
163 V(CreateFastArrayElements) \
165 V(MapPrototypeGetInt32Key) \
168 #define TURBOLEV_NON_VALUE_NODE_LIST(V) V(TransitionAndStoreArrayElement)
170 #define VALUE_NODE_LIST(V) \
173 V(ArgumentsElements) \
179 V(CallForwardVarargs) \
181 V(CallWithArrayLike) \
183 V(CallKnownApiFunction) \
184 V(CallKnownJSFunction) \
187 V(CheckConstructResult) \
188 V(CheckDerivedConstructResult) \
189 V(ConstructWithSpread) \
191 V(ConvertHoleToUndefined) \
192 V(CreateArrayLiteral) \
193 V(CreateShallowArrayLiteral) \
194 V(CreateObjectLiteral) \
195 V(CreateShallowObjectLiteral) \
196 V(CreateFunctionContext) \
198 V(FastCreateClosure) \
199 V(CreateRegExpLiteral) \
201 V(EnsureWritableFastElements) \
202 V(ExtendPropertiesBackingStore) \
203 V(InlinedAllocation) \
206 V(GeneratorRestoreRegister) \
208 V(GetSecondReturnedValue) \
209 V(GetTemplateObject) \
210 V(HasInPrototypeChain) \
213 V(LoadTaggedFieldForProperty) \
214 V(LoadTaggedFieldForContextSlotNoCells) \
215 V(LoadTaggedFieldForContextSlot) \
219 V(LoadTaggedFieldByFieldIndex) \
220 V(LoadFixedArrayElement) \
221 V(LoadFixedDoubleArrayElement) \
222 V(LoadHoleyFixedDoubleArrayElement) \
223 V(LoadHoleyFixedDoubleArrayElementCheckedNotHole) \
224 V(LoadSignedIntDataViewElement) \
225 V(LoadDoubleDataViewElement) \
226 V(LoadTypedArrayLength) \
227 V(LoadSignedIntTypedArrayElement) \
228 V(LoadUnsignedIntTypedArrayElement) \
229 V(LoadDoubleTypedArrayElement) \
230 V(LoadSignedIntConstantTypedArrayElement) \
231 V(LoadUnsignedIntConstantTypedArrayElement) \
232 V(LoadDoubleConstantTypedArrayElement) \
233 V(LoadEnumCacheLength) \
235 V(LoadNamedGeneric) \
236 V(LoadNamedFromSuperGeneric) \
237 V(MaybeGrowFastElements) \
238 V(MigrateMapIfNeeded) \
240 V(DefineNamedOwnGeneric) \
241 V(StoreInArrayLiteralGeneric) \
245 V(DefineKeyedOwnGeneric) \
248 V(CheckedSmiSizedInt32) \
249 V(CheckedSmiTagInt32) \
250 V(CheckedSmiTagUint32) \
251 V(CheckedSmiTagIntPtr) \
252 V(UnsafeSmiTagInt32) \
253 V(UnsafeSmiTagUint32) \
254 V(UnsafeSmiTagIntPtr) \
257 V(CheckedInternalizedString) \
258 V(CheckedObjectToIndex) \
259 V(CheckedTruncateNumberOrOddballToInt32) \
260 V(CheckedInt32ToUint32) \
261 V(CheckedIntPtrToUint32) \
262 V(UnsafeInt32ToUint32) \
263 V(CheckedUint32ToInt32) \
264 V(CheckedIntPtrToInt32) \
265 V(ChangeInt32ToFloat64) \
266 V(ChangeUint32ToFloat64) \
267 V(ChangeIntPtrToFloat64) \
268 V(CheckedTruncateFloat64ToInt32) \
269 V(CheckedTruncateFloat64ToUint32) \
270 V(TruncateNumberOrOddballToInt32) \
271 V(TruncateUint32ToInt32) \
272 V(TruncateFloat64ToInt32) \
273 V(UnsafeTruncateUint32ToInt32) \
274 V(UnsafeTruncateFloat64ToInt32) \
275 V(Int32ToUint8Clamped) \
276 V(Uint32ToUint8Clamped) \
277 V(Float64ToUint8Clamped) \
278 V(CheckedNumberToUint8Clamped) \
281 V(Int32CountLeadingZeros) \
282 V(SmiCountLeadingZeros) \
283 V(Float64CountLeadingZeros) \
287 V(Float64ToHeapNumberForField) \
288 V(HoleyFloat64ToTagged) \
289 V(CheckedSmiTagFloat64) \
290 V(CheckedNumberToInt32) \
291 V(CheckedNumberOrOddballToFloat64) \
292 V(UncheckedNumberOrOddballToFloat64) \
293 V(CheckedNumberOrOddballToHoleyFloat64) \
294 V(CheckedHoleyFloat64ToFloat64) \
295 V(HoleyFloat64ToMaybeNanFloat64) \
296 IF_UD(V, Float64ToHoleyFloat64) \
297 IF_UD(V, ConvertHoleNanToUndefinedNan) \
298 V(HoleyFloat64IsHole) \
300 V(SetPendingMessage) \
305 V(SeqOneByteStringAt) \
307 V(UnwrapStringWrapper) \
309 V(ToBooleanLogicalNot) \
310 V(AllocateElementsArray) \
314 V(TestUndetectable) \
317 V(ToNumberOrNumeric) \
320 V(TransitionElementsKind) \
322 V(UpdateJSArrayLength) \
324 V(GetContinuationPreservedEmbedderData) \
325 CONSTANT_VALUE_NODE_LIST(V) \
326 INT32_OPERATIONS_NODE_LIST(V) \
327 FLOAT64_OPERATIONS_NODE_LIST(V) \
328 SMI_OPERATIONS_NODE_LIST(V) \
329 GENERIC_OPERATIONS_NODE_LIST(V) \
330 INLINE_BUILTIN_NODE_LIST(V) \
331 TURBOLEV_VALUE_NODE_LIST(V)
333 #define GAP_MOVE_NODE_LIST(V) \
337 #define NON_VALUE_NODE_LIST(V) \
339 V(CheckDynamicValue) \
341 V(CheckUint32IsSmi) \
342 V(CheckIntPtrIsSmi) \
343 V(CheckHoleyFloat64IsSmi) \
345 V(CheckInt32Condition) \
346 V(CheckCacheIndicesNotCleared) \
347 V(CheckJSDataViewBounds) \
348 V(CheckTypedArrayBounds) \
349 V(CheckTypedArrayNotDetached) \
351 V(CheckMapsWithMigrationAndDeopt) \
352 V(CheckMapsWithMigration) \
353 V(CheckMapsWithAlreadyLoadedMap) \
354 V(CheckDetectableCallable) \
355 V(CheckJSReceiverOrNullOrUndefined) \
357 V(CheckHoleyFloat64NotHole) \
361 V(CheckSeqOneByteString) \
362 V(CheckStringOrStringWrapper) \
363 V(CheckStringOrOddball) \
366 V(CheckValueEqualsInt32) \
367 V(CheckFloat64SameValue) \
368 V(CheckValueEqualsString) \
369 V(CheckInstanceType) \
372 V(FunctionEntryStackCheck) \
374 V(TryOnStackReplacement) \
376 V(StoreDoubleField) \
377 V(StoreFixedArrayElementWithWriteBarrier) \
378 V(StoreFixedArrayElementNoWriteBarrier) \
379 V(StoreFixedDoubleArrayElement) \
382 V(StoreIntTypedArrayElement) \
383 V(StoreDoubleTypedArrayElement) \
384 V(StoreIntConstantTypedArrayElement) \
385 V(StoreDoubleConstantTypedArrayElement) \
386 V(StoreSignedIntDataViewElement) \
387 V(StoreDoubleDataViewElement) \
388 V(StoreTaggedFieldNoWriteBarrier) \
389 V(StoreTaggedFieldWithWriteBarrier) \
390 V(StoreContextSlotWithWriteBarrier) \
391 V(StoreTrustedPointerFieldWithWriteBarrier) \
392 V(HandleNoHeapWritesInterrupt) \
393 V(ReduceInterruptBudgetForLoop) \
394 V(ReduceInterruptBudgetForReturn) \
395 V(ThrowReferenceErrorIfHole) \
396 V(ThrowSuperNotCalledIfHole) \
397 V(ThrowSuperAlreadyCalledIfNotHole) \
398 V(ThrowIfNotCallable) \
399 V(ThrowIfNotSuperConstructor) \
400 V(TransitionElementsKindOrCheckMap) \
401 V(SetContinuationPreservedEmbedderData) \
402 GAP_MOVE_NODE_LIST(V) \
403 TURBOLEV_NON_VALUE_NODE_LIST(V)
405 #define NODE_LIST(V) \
406 NON_VALUE_NODE_LIST(V) \
409 #define BRANCH_CONTROL_NODE_LIST(V) \
411 V(BranchIfRootConstant) \
412 V(BranchIfToBooleanTrue) \
413 V(BranchIfInt32ToBooleanTrue) \
414 V(BranchIfIntPtrToBooleanTrue) \
415 V(BranchIfFloat64ToBooleanTrue) \
416 V(BranchIfFloat64IsHole) \
417 V(BranchIfReferenceEqual) \
418 V(BranchIfInt32Compare) \
419 V(BranchIfUint32Compare) \
420 V(BranchIfFloat64Compare) \
421 V(BranchIfUndefinedOrNull) \
422 V(BranchIfUndetectable) \
423 V(BranchIfJSReceiver) \
426 #define CONDITIONAL_CONTROL_NODE_LIST(V) \
428 BRANCH_CONTROL_NODE_LIST(V)
430 #define UNCONDITIONAL_CONTROL_NODE_LIST(V) \
432 V(CheckpointedJump) \
435 #define TERMINAL_CONTROL_NODE_LIST(V) \
440 #define CONTROL_NODE_LIST(V) \
441 TERMINAL_CONTROL_NODE_LIST(V) \
442 CONDITIONAL_CONTROL_NODE_LIST(V) \
443 UNCONDITIONAL_CONTROL_NODE_LIST(V)
445 #define NODE_BASE_LIST(V) \
450 #define DEF_OPCODES(type) k##type,
453 #define PLUS_ONE(type) +1
455 static constexpr
Opcode kFirstOpcode =
static_cast<Opcode>(0);
456 static constexpr
Opcode kLastOpcode =
static_cast<Opcode>(kOpcodeCount - 1);
464 #define V(Name) Opcode::k##Name,
465 static constexpr
Opcode kFirstValueNodeOpcode =
467 static constexpr
Opcode kLastValueNodeOpcode =
469 static constexpr
Opcode kFirstConstantNodeOpcode =
471 static constexpr
Opcode kLastConstantNodeOpcode =
473 static constexpr
Opcode kFirstGapMoveNodeOpcode =
475 static constexpr
Opcode kLastGapMoveNodeOpcode =
478 static constexpr
Opcode kFirstNodeOpcode = std::min({
NODE_LIST(V) kLastOpcode});
479 static constexpr
Opcode kLastNodeOpcode = std::max({
NODE_LIST(V) kFirstOpcode});
481 static constexpr
Opcode kFirstBranchControlNodeOpcode =
483 static constexpr
Opcode kLastBranchControlNodeOpcode =
486 static constexpr
Opcode kFirstConditionalControlNodeOpcode =
488 static constexpr
Opcode kLastConditionalControlNodeOpcode =
491 static constexpr
Opcode kLastUnconditionalControlNodeOpcode =
493 static constexpr
Opcode kFirstUnconditionalControlNodeOpcode =
496 static constexpr
Opcode kLastTerminalControlNodeOpcode =
498 static constexpr
Opcode kFirstTerminalControlNodeOpcode =
501 static constexpr
Opcode kFirstControlNodeOpcode =
503 static constexpr
Opcode kLastControlNodeOpcode =
508 return kFirstValueNodeOpcode <= opcode && opcode <= kLastValueNodeOpcode;
511 return kFirstConstantNodeOpcode <= opcode &&
512 opcode <= kLastConstantNodeOpcode;
516 case Opcode::kFloat64Add:
517 case Opcode::kFloat64Multiply:
518 case Opcode::kGenericStrictEqual:
519 case Opcode::kInt32AddWithOverflow:
520 case Opcode::kInt32BitwiseAnd:
521 case Opcode::kInt32BitwiseOr:
522 case Opcode::kInt32BitwiseXor:
523 case Opcode::kInt32MultiplyWithOverflow:
524 case Opcode::kStringEqual:
525 case Opcode::kTaggedEqual:
526 case Opcode::kTaggedNotEqual:
534 case Opcode::kTruncateUint32ToInt32:
535 case Opcode::kUnsafeTruncateUint32ToInt32:
536 case Opcode::kIdentity:
543 return kFirstGapMoveNodeOpcode <= opcode && opcode <= kLastGapMoveNodeOpcode;
546 return kFirstControlNodeOpcode <= opcode && opcode <= kLastControlNodeOpcode;
549 return kFirstBranchControlNodeOpcode <= opcode &&
550 opcode <= kLastBranchControlNodeOpcode;
553 return kFirstConditionalControlNodeOpcode <= opcode &&
554 opcode <= kLastConditionalControlNodeOpcode;
557 return kFirstUnconditionalControlNodeOpcode <= opcode &&
558 opcode <= kLastUnconditionalControlNodeOpcode;
561 return kFirstTerminalControlNodeOpcode <= opcode &&
562 opcode <= kLastTerminalControlNodeOpcode;
567 return opcode == Opcode::kStoreTaggedFieldWithWriteBarrier ||
568 opcode == Opcode::kStoreTaggedFieldNoWriteBarrier ||
569 opcode == Opcode::kStoreDoubleField ||
570 opcode == Opcode::kStoreFloat64 || opcode == Opcode::kStoreInt32 ||
571 opcode == Opcode::kUpdateJSArrayLength ||
572 opcode == Opcode::kStoreFixedArrayElementWithWriteBarrier ||
573 opcode == Opcode::kStoreFixedArrayElementNoWriteBarrier ||
574 opcode == Opcode::kStoreFixedDoubleArrayElement ||
575 opcode == Opcode::kStoreTrustedPointerFieldWithWriteBarrier;
578 return opcode == Opcode::kMaybeGrowFastElements ||
579 opcode == Opcode::kEnsureWritableFastElements;
582 return opcode == Opcode::kStoreIntTypedArrayElement ||
583 opcode == Opcode::kStoreDoubleTypedArrayElement;
588 case Opcode::kStoreMap:
589 case Opcode::kStoreInt32:
590 case Opcode::kStoreTrustedPointerFieldWithWriteBarrier:
591 case Opcode::kStoreTaggedFieldWithWriteBarrier:
592 case Opcode::kStoreTaggedFieldNoWriteBarrier:
593 case Opcode::kStoreContextSlotWithWriteBarrier:
594 case Opcode::kStoreFloat64:
604 class ConditionalControlNode;
605 class BranchControlNode;
606 class UnconditionalControlNode;
607 class TerminalControlNode;
625 #if defined(V8_TARGET_ARCH_RISCV64)
637 #define LEAF_NODE_TYPE_LIST(V) \
639 V(HeapNumber, (1 << 1)) \
641 V(Undefined, (1 << 3)) \
642 V(Boolean, (1 << 4)) \
643 V(Symbol, (1 << 5)) \
660 V(ROSeqInternalizedOneByteString, (1 << 6)) \
661 V(OtherSeqInternalizedOneByteString, (1 << 7)) \
662 V(OtherInternalizedString, (1 << 8)) \
663 V(OtherSeqOneByteString, (1 << 9)) \
664 V(OtherString, (1 << 10)) \
666 V(Context, (1 << 11)) \
667 V(StringWrapper, (1 << 12)) \
668 V(JSArray, (1 << 13)) \
669 V(JSFunction, (1 << 14)) \
670 V(OtherCallable, (1 << 15)) \
671 V(OtherHeapObject, (1 << 16)) \
672 V(OtherJSReceiver, (1 << 17))
674 #define COUNT(...) +1
678 #define COMBINED_NODE_TYPE_LIST(V) \
680 V(Unknown, ((1 << kNumberOfLeafNodeTypes) - 1)) \
681 V(Callable, kJSFunction | kOtherCallable) \
682 V(NullOrUndefined, kNull | kUndefined) \
683 V(Oddball, kNullOrUndefined | kBoolean) \
684 V(Number, kSmi | kHeapNumber) \
685 V(NumberOrBoolean, kNumber | kBoolean) \
686 V(NumberOrOddball, kNumber | kOddball) \
687 V(InternalizedString, kROSeqInternalizedOneByteString | \
688 kOtherSeqInternalizedOneByteString | \
689 kOtherInternalizedString) \
690 V(SeqOneByteString, kROSeqInternalizedOneByteString | \
691 kOtherSeqInternalizedOneByteString | \
692 kOtherSeqOneByteString) \
693 V(String, kInternalizedString | kSeqOneByteString | kOtherString) \
694 V(StringOrStringWrapper, kString | kStringWrapper) \
695 V(StringOrOddball, kString | kOddball) \
696 V(Name, kString | kSymbol) \
697 V(JSReceiver, kJSArray | kCallable | kStringWrapper | kOtherJSReceiver) \
698 V(JSReceiverOrNullOrUndefined, kJSReceiver | kNullOrUndefined) \
699 V(AnyHeapObject, kUnknown - kSmi)
701 #define NODE_TYPE_LIST(V) \
702 LEAF_NODE_TYPE_LIST(V) \
703 COMBINED_NODE_TYPE_LIST(V)
706 #define DEFINE_NODE_TYPE(Name, Value) k##Name = Value,
708 #undef DEFINE_NODE_TYPE
718 case NodeType::kOtherCallable:
719 case NodeType::kOtherInternalizedString:
720 case NodeType::kOtherSeqInternalizedOneByteString:
721 case NodeType::kOtherSeqOneByteString:
722 case NodeType::kOtherString:
764 if (string_type == NodeType::kROSeqInternalizedOneByteString)
return false;
767 if (string_type == NodeType::kInternalizedString)
return false;
769 if (string_type == NodeType::kString)
return false;
792 NodeType::kSeqOneByteString)));
795 NodeType::kInternalizedString)));
809 if (
NodeTypeIs(string_type, NodeType::kInternalizedString)) {
822 static_assert(
MakeTypeStable(NodeType::kSeqOneByteString) == NodeType::kString);
825 NodeType::kInternalizedString);
827 static_assert(
MakeTypeStable(NodeType::kROSeqInternalizedOneByteString) ==
828 NodeType::kROSeqInternalizedOneByteString);
832 NodeType::kSeqOneByteString)) ==
833 UnionType(NodeType::kNumber, NodeType::kString));
836 #define ADD_STATIC_ASSERT(Name, Value) \
837 static_assert(NodeTypeIsNeverStandalone(NodeType::k##Name) || \
838 NodeTypeIs(NodeType::k##Name, NodeType::kUnknown));
840 #undef ADD_STATIC_ASSERT
844 if (
map.IsHeapNumberMap())
return NodeType::kHeapNumber;
845 if (
map.IsStringMap()) {
846 if (
map.IsInternalizedStringMap()) {
847 return NodeType::kInternalizedString;
849 if (
map.IsSeqStringMap() &&
map.IsOneByteStringMap()) {
850 return NodeType::kSeqOneByteString;
852 return NodeType::kString;
854 if (
map.IsStringWrapperMap())
return NodeType::kStringWrapper;
855 if (
map.IsSymbolMap())
return NodeType::kSymbol;
856 if (
map.IsBooleanMap(
broker))
return NodeType::kBoolean;
857 if (
map.IsOddballMap()) {
859 return NodeType::kNullOrUndefined;
861 if (
map.IsContextMap())
return NodeType::kContext;
862 if (
map.IsJSArrayMap())
return NodeType::kJSArray;
863 if (
map.IsJSFunctionMap())
return NodeType::kJSFunction;
864 if (
map.is_callable()) {
865 return NodeType::kCallable;
867 if (
map.IsJSReceiverMap()) {
869 return NodeType::kOtherJSReceiver;
871 return NodeType::kOtherHeapObject;
876 return static_cast<int>(
type) == 0;
880 compiler::ObjectRef ref) {
884 if (
type == NodeType::kInternalizedString && ref.is_read_only()) {
885 if (ref.AsString().IsSeqString() &&
886 ref.AsString().IsOneByteRepresentation()) {
887 type = NodeType::kROSeqInternalizedOneByteString;
898 case NodeType::kHeapNumber:
899 return map.IsHeapNumberMap();
900 case NodeType::kNull:
902 case NodeType::kUndefined:
904 case NodeType::kBoolean:
906 case NodeType::kSymbol:
907 return map.IsSymbolMap();
908 case NodeType::kOtherString:
911 return map.IsStringMap();
912 case NodeType::kOtherSeqOneByteString:
913 return map.IsSeqStringMap() &&
map.IsOneByteStringMap();
916 case NodeType::kROSeqInternalizedOneByteString:
917 case NodeType::kOtherSeqInternalizedOneByteString:
918 return map.IsInternalizedStringMap() &&
map.IsSeqStringMap() &&
919 map.IsOneByteStringMap();
920 case NodeType::kOtherInternalizedString:
921 return map.IsInternalizedStringMap();
922 case NodeType::kStringWrapper:
923 return map.IsStringWrapperMap();
924 case NodeType::kContext:
925 return map.IsContextMap();
926 case NodeType::kJSArray:
927 return map.IsJSArrayMap();
928 case NodeType::kJSFunction:
929 return map.IsJSFunctionMap();
930 case NodeType::kCallable:
931 return map.is_callable();
932 case NodeType::kOtherCallable:
933 return map.is_callable() && !
map.IsJSFunctionMap();
934 case NodeType::kOtherJSReceiver:
935 return map.IsJSReceiverMap() && !
map.IsJSArrayMap() &&
936 !
map.is_callable() && !
map.IsStringWrapperMap();
937 case NodeType::kOtherHeapObject:
938 return !
map.IsHeapNumberMap() && !
map.IsOddballMap() &&
939 !
map.IsContextMap() && !
map.IsSymbolMap() && !
map.IsStringMap() &&
940 !
map.IsJSReceiverMap();
953 static_assert(
NodeTypeIs(NodeType::kAnyHeapObject, NodeType::kUnknown));
960 while (type_bits != 0) {
976 #define CASE(Name, _) \
977 case NodeType::k##Name: \
983 #define CASE(Name, _) \
984 if (NodeTypeIs(NodeType::k##Name, type)) { \
985 if constexpr (NodeType::k##Name != NodeType::kUnknown) { \
995 #define DEFINE_NODE_TYPE_CHECK(Type, _) \
996 inline bool NodeTypeIs##Type(NodeType type) { \
997 return NodeTypeIs(type, NodeType::k##Type); \
1000 #undef DEFINE_NODE_TYPE_CHECK
1003 return (
static_cast<int>(
type) &
1004 static_cast<int>(NodeType::kNullOrUndefined)) != 0;
1023 return os <<
"Tagged";
1025 return os <<
"Int32";
1027 return os <<
"Uint32";
1029 return os <<
"Float64";
1031 return os <<
"HoleyFloat64";
1033 return os <<
"Word64";
1039 switch (conversion_type) {
1041 return os <<
"Number";
1043 return os <<
"NumberOrBoolean";
1045 return os <<
"NumberOrOddball";
1051 if (!
map.IsJSTypedArrayMap())
return false;
1058 if (!
map.IsJSArrayMap())
return false;
1065 if (!
map.IsJSObjectMap())
return false;
1072 if (!
map.IsStringMap())
return false;
1079 if (
map.instance_type() != HEAP_NUMBER_TYPE)
return false;
1086 if (
map.instance_type() == HEAP_NUMBER_TYPE)
return true;
1091 #define DEF_FORWARD_DECLARATION(type, ...) class type;
1093 #undef DEF_FORWARD_DECLARATION
1096 static constexpr
NodeIdT kInvalidNodeId = 0;
1097 static constexpr
NodeIdT kFirstValidNodeId = 1;
1103 struct BasicBlockRefBuilder;
1113 state_ = kBlockPointer;
1140 state_ = kBlockPointer;
1142 return old_next_ptr;
1152 return old_next_ptr;
1159 DCHECK_EQ(ref_list_head->state_, kRefList);
1164 return old_next_ptr;
1203 enum { kBlockPointer, kRefList } state_;
1217 AttachedDeoptInfo::kEager;
1221 AttachedDeoptInfo::kLazy;
1225 AttachedDeoptInfo::kCheckpoint;
1260 return (bitfield_ & kPureMask) == kPureValue;
1370 return NeedsRegisterSnapshot();
1373 constexpr
explicit OpProperties(uint32_t bitfield) : bitfield_(bitfield) {}
1374 operator uint32_t()
const {
return bitfield_; }
1388 using kAttachedDeoptInfoBits = kIsCallBit::Next<AttachedDeoptInfo, 2>;
1389 using kCanThrowBit = kAttachedDeoptInfoBits::Next<bool, 1>;
1390 using kCanReadBit = kCanThrowBit::Next<bool, 1>;
1391 using kCanWriteBit = kCanReadBit::Next<bool, 1>;
1392 using kCanAllocateBit = kCanWriteBit::Next<bool, 1>;
1393 using kNotIdempotentBit = kCanAllocateBit::Next<bool, 1>;
1394 using kValueRepresentationBits =
1395 kNotIdempotentBit::Next<ValueRepresentation, 3>;
1396 using kIsConversionBit = kValueRepresentationBits::Next<bool, 1>;
1397 using kNeedsRegisterSnapshotBit = kIsConversionBit::Next<bool, 1>;
1399 static const uint32_t kPureMask =
1409 static constexpr
OpProperties NeedsRegisterSnapshot() {
1413 const uint32_t bitfield_;
1435 template <
typename... Args>
1437 DCHECK(operand_.IsInvalid());
1441 template <
typename... Args>
1443 DCHECK(operand_.IsUnallocated());
1449 operand_ = location;
1454 DCHECK(operand_.IsUnallocated());
1458 template <
typename... Args>
1460 DCHECK(operand_.IsUnallocated());
1492 NodeIdT next_use_id_ = kInvalidNodeId;
1506 class VirtualObjectList;
1507 class InterpretedDeoptFrame;
1508 class InlinedArgumentsDeoptFrame;
1509 class ConstructInvokeStubDeoptFrame;
1510 class BuiltinContinuationDeoptFrame;
1614 int result_size)
const;
1617 InterpretedFrameData& data() {
return data_.
get<InterpretedFrameData>(); }
1618 const InterpretedFrameData& data()
const {
1619 return data_.
get<InterpretedFrameData>();
1624 static_assert(
sizeof(InterpretedDeoptFrame) ==
sizeof(DeoptFrame));
1653 InlinedArgumentsFrameData& data() {
1654 return data_.
get<InlinedArgumentsFrameData>();
1656 const InlinedArgumentsFrameData& data()
const {
1657 return data_.
get<InlinedArgumentsFrameData>();
1662 static_assert(
sizeof(InlinedArgumentsDeoptFrame) ==
sizeof(DeoptFrame));
1692 ConstructInvokeStubFrameData& data() {
1693 return data_.
get<ConstructInvokeStubFrameData>();
1695 const ConstructInvokeStubFrameData& data()
const {
1696 return data_.
get<ConstructInvokeStubFrameData>();
1701 static_assert(
sizeof(ConstructInvokeStubDeoptFrame) ==
sizeof(DeoptFrame));
1719 compiler::OptionalJSFunctionRef maybe_js_target,
1735 BuiltinContinuationFrameData& data() {
1736 return data_.
get<BuiltinContinuationFrameData>();
1738 const BuiltinContinuationFrameData& data()
const {
1739 return data_.
get<BuiltinContinuationFrameData>();
1744 static_assert(
sizeof(BuiltinContinuationDeoptFrame) ==
sizeof(DeoptFrame));
1746 inline const BuiltinContinuationDeoptFrame&
1831 return feedback_to_update_;
1837 return input_locations_;
1847 size_t input_location_count() {
return input_location_count_; }
1851 DeoptFrame top_frame_;
1853 InputLocation* input_locations_ =
nullptr;
1855 size_t input_location_count_ = 0;
1857 Label deopt_entry_label_;
1858 int translation_index_ = -1;
1876 template <
typename Function>
1878 template <
typename Function>
1897 DCHECK(IsConsideredForResultLocation());
1898 return result_location_;
1901 DCHECK(IsConsideredForResultLocation());
1907 DCHECK(IsConsideredForResultLocation());
1908 return result_location_.
is_valid();
1916 kUninitializedCallReturnPc);
1921 kUninitializedCallReturnPc);
1929 template <
typename Function>
1931 template <
typename Function>
1936 bool IsConsideredForResultLocation()
const {
1948 switch (
top_frame().as_builtin_continuation().builtin_id()) {
1949 case Builtin::kGenericLazyDeoptContinuation:
1950 case Builtin::kGetIteratorWithFeedbackLazyDeoptContinuation:
1951 case Builtin::kCallIteratorWithFeedbackLazyDeoptContinuation:
1960 using DeoptingCallReturnPcField = base::BitField<unsigned int, 0, 30>;
1961 using ResultSizeField = DeoptingCallReturnPcField::Next<unsigned int, 2>;
1966 static constexpr
int kMaxCodeSize = 512 *
MB;
1967 static constexpr
unsigned int kUninitializedCallReturnPc =
1970 static_assert(kMaxCodeSize != kUninitializedCallReturnPc);
1989 : catch_block_(), depth_(static_cast<int>(
mode)), pc_offset_(-1) {}
1992 : catch_block_(catch_block_ref), depth_(
depth), pc_offset_(-1) {
1998 : catch_block_(catch_block_ref), depth_(
depth), pc_offset_(-1) {}
2025 Label trampoline_entry_;
2046 #define DEF_OPCODE_OF(Name) \
2048 struct opcode_of_helper<Name> { \
2049 static constexpr Opcode value = Opcode::k##Name; \
2052 #undef DEF_OPCODE_OF
2054 template <
typename T>
2056 char* address_as_char_ptr =
reinterpret_cast<char*
>(address);
2057 char* object_ptr_as_char_ptr = address_as_char_ptr -
sizeof(
T);
2058 return reinterpret_cast<T*
>(object_ptr_as_char_ptr);
2061 template <
typename T>
2063 const char* address_as_char_ptr =
reinterpret_cast<const char*
>(address);
2064 const char* object_ptr_as_char_ptr = address_as_char_ptr -
sizeof(
T);
2065 return reinterpret_cast<const T*
>(object_ptr_as_char_ptr);
2070 #define DEOPTIMIZE_REASON_FIELD \
2072 using ReasonField = \
2073 NextBitField<DeoptimizeReason, base::bits::WhichPowerOfTwo<size_t>( \
2074 base::bits::RoundUpToPowerOfTwo32( \
2075 kDeoptimizeReasonCount))>; \
2078 DeoptimizeReason deoptimize_reason() const { \
2079 return ReasonField::decode(bitfield()); \
2082 struct KnownNodeAspects;
2100 template <
class T,
int size>
2109 template <
class Derived,
typename... Args>
2110 static Derived*
New(
Zone* zone, std::initializer_list<ValueNode*> inputs,
2112 static_assert(Derived::kProperties.is_conversion(),
2113 "This method does not implicitly convert input types. Use "
2114 "MaglevGraphBuilder::AddNewNode instead or NodeBase::New and "
2115 "initialize and convert inputs manually.");
2117 Allocate<Derived>(zone, inputs.size(), std::forward<Args>(
args)...);
2129 template <
class Derived,
typename... Args>
2151 constexpr
bool Is()
const;
2156 return static_cast<T*
>(
this);
2161 return static_cast<const T*
>(
this);
2165 return Is<T>() ?
static_cast<T*
>(
this) :
nullptr;
2170 return Is<T>() ?
static_cast<const T*
>(
this) :
nullptr;
2193 constexpr
auto begin() {
return std::make_reverse_iterator(&
input(-1)); }
2198 constexpr
bool has_id()
const {
return id_ != kInvalidNodeId; }
2209 template <
typename RegisterT>
2211 if constexpr (std::is_same_v<RegisterT, Register>) {
2218 template <
typename RegisterT>
2220 return owner_or_temporaries_.temporaries<RegisterT>();
2225 template <
typename RegisterT>
2227 owner_or_temporaries_.temporaries<RegisterT>() = list;
2237 template <
typename Function>
2241 bool skip_targets =
false)
const;
2256 return reinterpret_cast<LazyDeoptInfo*
>(deopt_info_address());
2280 bitfield_,
properties().WithNewValueRepresentation(new_repr));
2302 template <
typename NodeT>
2304 OverwriteWith(NodeBase::opcode_of<NodeT>, NodeT::kProperties);
2309 std::optional<OpProperties> maybe_new_properties = std::nullopt) {
2310 OpProperties new_properties = maybe_new_properties.has_value()
2311 ? maybe_new_properties.value()
2314 CheckCanOverwriteWith(new_opcode, new_properties);
2337 constexpr uint64_t
bitfield()
const {
return bitfield_; }
2342 const uint64_t base_bitfield_mask =
2345 DCHECK_EQ(bitfield_ & base_bitfield_mask,
2346 new_bitfield & base_bitfield_mask);
2348 bitfield_ = new_bitfield;
2352 return detail::ObjectPtrBeforeAddress<Input>(
this);
2355 return detail::ObjectPtrBeforeAddress<Input>(
this);
2382 DCHECK_EQ(num_temporaries_needed<Register>(), 0);
2387 DCHECK_EQ(num_temporaries_needed<DoubleRegister>(), 0);
2402 template <
class Derived,
typename... Args>
2405 !Derived::kProperties.can_eager_deopt() ||
2406 !Derived::kProperties.can_lazy_deopt(),
2407 "The current deopt info representation, at the end of inputs, requires "
2408 "that we cannot have both lazy and eager deopts on a node. If we ever "
2409 "need this, we have to update accessors to check node->properties() "
2410 "for which deopts are active.");
2411 constexpr
size_t size_before_inputs =
2412 ExceptionHandlerInfoSize(Derived::kProperties) +
2413 RegisterSnapshotSize(Derived::kProperties) +
2414 EagerDeoptInfoSize(Derived::kProperties) +
2415 LazyDeoptInfoSize(Derived::kProperties);
2418 const size_t size_before_node =
2422 const size_t size = size_before_node +
sizeof(Derived);
2423 intptr_t raw_buffer =
2426 memset(
reinterpret_cast<void*
>(raw_buffer), 0,
size);
2429 void* node_buffer =
reinterpret_cast<void*
>(raw_buffer + size_before_node);
2434 new (node_buffer) Derived(
bitfield, std::forward<Args>(
args)...);
2438 static constexpr
size_t ExceptionHandlerInfoSize(OpProperties
properties) {
2439 return RoundUp<alignof(Input)>(
2443 static constexpr
size_t RegisterSnapshotSize(OpProperties
properties) {
2444 return RoundUp<alignof(Input)>(
2448 static constexpr
size_t EagerDeoptInfoSize(OpProperties
properties) {
2449 return RoundUp<alignof(Input)>(
2451 ?
sizeof(EagerDeoptInfo)
2455 static constexpr
size_t LazyDeoptInfoSize(OpProperties
properties) {
2456 return RoundUp<alignof(Input)>(
2462 Address deopt_info_address()
const {
2471 Address register_snapshot_address()
const {
2472 size_t extra = RegisterSnapshotSize(
properties());
2473 return deopt_info_address() - extra;
2478 Address exception_handler_address()
const {
2479 size_t extra = ExceptionHandlerInfoSize(
properties());
2480 return register_snapshot_address() - extra;
2483 void CheckCanOverwriteWith(
Opcode new_opcode, OpProperties new_properties);
2488 struct OwnerOrTemporaries {
2489 BasicBlock*
owner()
const {
2491 return store_.owner_;
2494 template <
typename RegisterT>
2497 if constexpr (std::is_same_v<RegisterT, Register>) {
2498 return store_.regs_.temporaries_;
2500 return store_.regs_.double_temporaries_;
2504 BasicBlock* operator=(BasicBlock*
owner) {
2506 DCHECK(state_ == State::kNull || state_ == State::kOwner);
2507 state_ = State::kOwner;
2509 return store_.owner_ =
owner;
2512 void InitReglist() {
2514 DCHECK(state_ == State::kNull || state_ == State::kOwner);
2515 state_ = State::kReglist;
2517 store_.regs_.temporaries_ =
RegList();
2538 State state_ = State::kNull;
2542 OwnerOrTemporaries owner_or_temporaries_;
2545 NodeBase(
const NodeBase&) =
delete;
2547 NodeBase& operator=(
const NodeBase&) =
delete;
2548 NodeBase& operator=(NodeBase&&) =
delete;
2553 return opcode() == opcode_of<T>;
2558 constexpr
bool NodeBase::Is<ValueNode>()
const {
2562 constexpr
bool NodeBase::Is<ControlNode>()
const {
2566 constexpr
bool NodeBase::Is<BranchControlNode>()
const {
2570 constexpr
bool NodeBase::Is<ConditionalControlNode>()
const {
2574 constexpr
bool NodeBase::Is<UnconditionalControlNode>()
const {
2578 constexpr
bool NodeBase::Is<TerminalControlNode>()
const {
2596 op != Opcode::kCheckMaps;
2604 using NodeBase::NodeBase;
2645 template <
typename RegisterT>
2648 return RegisterT::from_code(
2679 if (state_ == kLastUse) {
2737 #ifdef V8_COMPRESS_POINTERS
2742 void SetTaggedResultNeedsDecompress() {
2749 for (Input&
input : *
this) {
2752 input.
node()->SetTaggedResultNeedsDecompress();
2754 }
else if (Is<Identity>()) {
2756 input(0).
node()->SetTaggedResultNeedsDecompress();
2809 template <
typename T>
2833 template <
typename T>
2835 if constexpr (std::is_same_v<T, DoubleRegister>) {
2858 hint_(compiler::InstructionOperand()),
2896 enum {kLastUse, kSpill} state_;
2927 return Cast<ValueNode>()->result();
2932 template <
typename Base,
typename Derived>
2938 return Derived::kProperties;
2941 template <
typename... Args>
2942 static Derived*
New(
Zone* zone, std::initializer_list<ValueNode*> inputs,
2944 return NodeBase::New<Derived>(zone, inputs, std::forward<Args>...);
2946 template <
typename... Args>
2948 return NodeBase::New<Derived>(zone,
input_count, std::forward<Args>...);
2952 template <
typename... Args>
2954 : Base(bitfield,
std::forward<Args>(
args)...) {
2963 template <
size_t Size>
2966 template <
typename... Args>
2969 static_assert(
sizeof...(
args) == Size);
2977 template <
size_t InputCount,
typename Base,
typename Derived>
2986 return std::make_reverse_iterator(&this->input(
input_count() - 1));
2992 std::is_same_v<
const InputTypes, decltype(Derived::kInputTypes)>);
3000 #ifdef V8_COMPRESS_POINTERS
3001 void MarkTaggedInputsAsDecompressing()
const {
3004 std::is_same_v<
const InputTypes, decltype(Derived::kInputTypes)>);
3008 ValueNode* input_node = this->input(
i).node();
3009 input_node->SetTaggedResultNeedsDecompress();
3020 template <
typename... Args>
3027 template <
class T,
class =
void>
3031 :
public std::true_type {};
3033 template <
class Derived>
3036 template <
class Derived>
3039 template <
size_t InputCount,
class Derived>
3043 template <
size_t InputCount,
class Derived>
3058 #ifdef V8_COMPRESS_POINTERS
3059 void MarkTaggedInputsAsDecompressing() {
3070 template <
class Derived, Operation kOperation>
3096 template <
class Derived, Operation kOperation>
3124 #define DEF_OPERATION_WITH_FEEDBACK_NODE(Name, Super, OpName) \
3125 class Name : public Super<Name, Operation::k##OpName> { \
3126 using Base = Super<Name, Operation::k##OpName>; \
3129 Name(uint64_t bitfield, const compiler::FeedbackSource& feedback) \
3130 : Base(bitfield, feedback) {} \
3131 int MaxCallStackArgs() const { return 0; } \
3132 void SetValueLocationConstraints(); \
3133 void GenerateCode(MaglevAssembler*, const ProcessingState&); \
3134 void PrintParams(std::ostream&, MaglevGraphLabeller*) const {} \
3137 #define DEF_UNARY_WITH_FEEDBACK_NODE(Name) \
3138 DEF_OPERATION_WITH_FEEDBACK_NODE(Generic##Name, UnaryWithFeedbackNode, Name)
3139 #define DEF_BINARY_WITH_FEEDBACK_NODE(Name) \
3140 DEF_OPERATION_WITH_FEEDBACK_NODE(Generic##Name, BinaryWithFeedbackNode, Name)
3144 #undef DEF_UNARY_WITH_FEEDBACK_NODE
3145 #undef DEF_BINARY_WITH_FEEDBACK_NODE
3146 #undef DEF_OPERATION_WITH_FEEDBACK_NODE
3148 template <
class Derived, Operation kOperation>
3169 #define DEF_OPERATION_NODE(Name, Super, OpName) \
3170 class Name : public Super<Name, Operation::k##OpName> { \
3171 using Base = Super<Name, Operation::k##OpName>; \
3174 explicit Name(uint64_t bitfield) : Base(bitfield) {} \
3175 void SetValueLocationConstraints(); \
3176 void GenerateCode(MaglevAssembler*, const ProcessingState&); \
3177 void PrintParams(std::ostream&, MaglevGraphLabeller*) const {} \
3180 #define DEF_INT32_BINARY_WITH_OVERFLOW_NODE(Name) \
3181 DEF_OPERATION_NODE(Int32##Name##WithOverflow, Int32BinaryWithOverflowNode, \
3188 #undef DEF_INT32_BINARY_WITH_OVERFLOW_NODE
3190 template <
class Derived, Operation kOperation>
3208 #define DEF_INT32_BINARY_NODE(Name) \
3209 DEF_OPERATION_NODE(Int32##Name, Int32BinaryNode, Name)
3215 #undef DEF_INT32_BINARY_NODE
3235 template <
class Derived, Operation kOperation>
3252 #define DEF_INT32_UNARY_WITH_OVERFLOW_NODE(Name) \
3253 DEF_OPERATION_NODE(Int32##Name##WithOverflow, Int32UnaryWithOverflowNode, \
3259 #undef DEF_INT32_UNARY_WITH_OVERFLOW_NODE
3299 return OperationBitField::decode(bitfield());
3309 using OperationBitField = NextBitField<Operation, 5>;
3317 :
Base(FlipBitField::update(bitfield,
flip)) {}
3323 constexpr
bool flip()
const {
return FlipBitField::decode(bitfield()); }
3332 using FlipBitField = NextBitField<bool, 1>;
3340 :
Base(FlipBitField::update(bitfield,
flip)) {}
3346 constexpr
bool flip()
const {
return FlipBitField::decode(bitfield()); }
3355 using FlipBitField = NextBitField<bool, 1>;
3396 template <
class Derived, Operation kOperation>
3416 #define DEF_OPERATION_NODE_WITH_CALL(Name, Super, OpName) \
3417 class Name : public Super<Name, Operation::k##OpName> { \
3418 using Base = Super<Name, Operation::k##OpName>; \
3421 explicit Name(uint64_t bitfield) : Base(bitfield) {} \
3422 int MaxCallStackArgs() const; \
3423 void SetValueLocationConstraints(); \
3424 void GenerateCode(MaglevAssembler*, const ProcessingState&); \
3425 void PrintParams(std::ostream&, MaglevGraphLabeller*) const {} \
3428 template <
class Derived, Operation kOperation>
3449 #define DEF_FLOAT64_BINARY_NODE(Name) \
3450 DEF_OPERATION_NODE(Float64##Name, Float64BinaryNode, Name)
3451 #define DEF_FLOAT64_BINARY_NODE_WITH_CALL(Name) \
3452 DEF_OPERATION_NODE_WITH_CALL(Float64##Name, Float64BinaryNodeWithCall, Name)
3457 #if defined(V8_TARGET_ARCH_ARM64) || defined(V8_TARGET_ARCH_ARM) || \
3458 defined(V8_TARGET_ARCH_RISCV64)
3466 #undef DEF_FLOAT64_BINARY_NODE
3467 #undef DEF_FLOAT64_BINARY_NODE_WITH_CALL
3469 #undef DEF_OPERATION_NODE
3470 #undef DEF_OPERATION_NODE_WITH_CALL
3488 return OperationBitField::decode(bitfield());
3498 using OperationBitField = NextBitField<Operation, 5>;
3506 :
Base(FlipBitField::update(bitfield,
flip)) {}
3513 constexpr
bool flip()
const {
return FlipBitField::decode(bitfield()); }
3522 using FlipBitField = NextBitField<bool, 1>;
3542 #define IEEE_754_UNARY_LIST(V) \
3543 V(MathAcos, acos, Acos) \
3544 V(MathAcosh, acosh, Acosh) \
3545 V(MathAsin, asin, Asin) \
3546 V(MathAsinh, asinh, Asinh) \
3547 V(MathAtan, atan, Atan) \
3548 V(MathAtanh, atanh, Atanh) \
3549 V(MathCbrt, cbrt, Cbrt) \
3550 V(MathCos, cos, Cos) \
3551 V(MathCosh, cosh, Cosh) \
3552 V(MathExp, exp, Exp) \
3553 V(MathExpm1, expm1, Expm1) \
3554 V(MathLog, log, Log) \
3555 V(MathLog1p, log1p, Log1p) \
3556 V(MathLog10, log10, Log10) \
3557 V(MathLog2, log2, Log2) \
3558 V(MathSin, sin, Sin) \
3559 V(MathSinh, sinh, Sinh) \
3560 V(MathTan, tan, Tan) \
3561 V(MathTanh, tanh, Tanh)
3568 #define DECL_ENUM(MathName, ExtName, EnumName) k##EnumName,
3587 auto options()
const {
return std::tuple{ieee_function_}; }
3758 #ifdef V8_COMPRESS_POINTERS
3759 void MarkTaggedInputsAsDecompressing() {
3782 #ifdef V8_COMPRESS_POINTERS
3783 void MarkTaggedInputsAsDecompressing() {
3806 #ifdef V8_COMPRESS_POINTERS
3807 void MarkTaggedInputsAsDecompressing() {
3831 #ifdef V8_COMPRESS_POINTERS
3832 void MarkTaggedInputsAsDecompressing() {
3855 #ifdef V8_COMPRESS_POINTERS
3856 void MarkTaggedInputsAsDecompressing() {
3903 uint32_t
value()
const {
return value_; }
3915 const uint32_t value_;
3929 intptr_t
value()
const {
return value_; }
3941 const intptr_t value_;
4111 :
Base(ConversionModeBitField::update(bitfield,
mode)) {}
4129 return ConversionModeBitField::decode(bitfield());
4133 bool canonicalize_smi() {
4134 return ConversionModeBitField::decode(bitfield()) ==
4138 using ConversionModeBitField = NextBitField<ConversionMode, 1>;
4171 :
Base(ConversionModeBitField::update(bitfield,
mode)) {}
4187 set_bitfield(ConversionModeBitField::update(bitfield(),
mode));
4193 return ConversionModeBitField::decode(bitfield());
4197 bool canonicalize_smi() {
4198 return ConversionModeBitField::decode(bitfield()) ==
4201 using ConversionModeBitField = NextBitField<ConversionMode, 1>;
4503 return Builtin::kMathCeilContinuation;
4505 return Builtin::kMathFloorContinuation;
4507 return Builtin::kMathRoundContinuation;
4524 auto options()
const {
return std::tuple{kind_}; }
4550 #define DEFINE_TRUNCATE_NODE(name, from_repr, properties) \
4551 class name : public FixedInputValueNodeT<1, name> { \
4552 using Base = FixedInputValueNodeT<1, name>; \
4555 explicit name(uint64_t bitfield) : Base(bitfield) {} \
4557 static constexpr OpProperties kProperties = properties; \
4558 static constexpr typename Base::InputTypes kInputTypes{ \
4559 ValueRepresentation::k##from_repr}; \
4561 Input& input() { return Node::input(0); } \
4563 void SetValueLocationConstraints(); \
4564 void GenerateCode(MaglevAssembler*, const ProcessingState&); \
4565 void PrintParams(std::ostream&, MaglevGraphLabeller*) const {} \
4575 #undef DEFINE_TRUNCATE_NODE
4577 template <
typename Derived, ValueRepresentation FloatType>
4580 class CheckedNumberOrOddballToFloat64OrHoleyFloat64
4586 explicit CheckedNumberOrOddballToFloat64OrHoleyFloat64(
4588 : Base(TaggedToFloat64ConversionTypeOffset::update(bitfield,
4589 conversion_type)) {}
4601 return TaggedToFloat64ConversionTypeOffset::decode(Base::bitfield());
4606 ? DeoptimizeReason::kNotANumberOrBoolean
4607 : DeoptimizeReason::kNotANumberOrOddball;
4610 void SetValueLocationConstraints();
4614 auto options()
const {
return std::tuple{conversion_type()}; }
4617 using TaggedToFloat64ConversionTypeOffset =
4618 Base::template NextBitField<TaggedToFloat64ConversionType, 2>;
4622 :
public CheckedNumberOrOddballToFloat64OrHoleyFloat64<
4623 CheckedNumberOrOddballToFloat64, ValueRepresentation::kFloat64> {
4624 using Base = CheckedNumberOrOddballToFloat64OrHoleyFloat64<
4630 : Base(bitfield, conversion_type) {}
4650 return DeoptimizeReason::kNotANumberOrOddball;
4685 :
Base(TaggedToFloat64ConversionTypeOffset::update(bitfield,
4700 return TaggedToFloat64ConversionTypeOffset::decode(bitfield());
4706 using TaggedToFloat64ConversionTypeOffset =
4707 NextBitField<TaggedToFloat64ConversionType, 2>;
4750 #ifdef V8_ENABLE_EXPERIMENTAL_UNDEFINED_DOUBLE
4751 class Float64ToHoleyFloat64
4753 using Base = FixedInputValueNodeT<1, Float64ToHoleyFloat64>;
4756 explicit Float64ToHoleyFloat64(uint64_t bitfield) : Base(bitfield) {}
4758 static constexpr OpProperties kProperties =
4765 void SetValueLocationConstraints();
4766 void GenerateCode(MaglevAssembler*,
const ProcessingState&);
4767 void PrintParams(std::ostream&, MaglevGraphLabeller*)
const {}
4770 class ConvertHoleNanToUndefinedNan
4772 using Base = FixedInputValueNodeT<1, ConvertHoleNanToUndefinedNan>;
4775 explicit ConvertHoleNanToUndefinedNan(uint64_t bitfield) : Base(bitfield) {}
4783 int MaxCallStackArgs()
const {
return 0; }
4784 void SetValueLocationConstraints();
4785 void GenerateCode(MaglevAssembler*,
const ProcessingState&);
4786 void PrintParams(std::ostream&, MaglevGraphLabeller*)
const {}
4813 :
Base(TaggedToFloat64ConversionTypeOffset::update(bitfield,
4827 return TaggedToFloat64ConversionTypeOffset::decode(bitfield());
4833 using TaggedToFloat64ConversionTypeOffset =
4834 NextBitField<TaggedToFloat64ConversionType, 2>;
4844 :
Base(TaggedToFloat64ConversionTypeOffset::update(bitfield,
4859 return TaggedToFloat64ConversionTypeOffset::decode(bitfield());
4865 using TaggedToFloat64ConversionTypeOffset =
4866 NextBitField<TaggedToFloat64ConversionType, 2>;
4924 using CheckTypeBitField = NextBitField<CheckType, 1>;
4948 using CheckTypeBitField = NextBitField<CheckType, 1>;
4977 auto options()
const {
return std::tuple(inputs_); }
4995 #ifdef V8_COMPRESS_POINTERS
4996 void MarkTaggedInputsAsDecompressing() {
5018 #ifdef V8_COMPRESS_POINTERS
5019 void MarkTaggedInputsAsDecompressing() {
5077 using CheckTypeBitField = NextBitField<CheckType, 1>;
5097 auto options()
const {
return std::tuple{literal_}; }
5218 #ifdef V8_COMPRESS_POINTERS
5219 void MarkTaggedInputsAsDecompressing() {
5229 const int suspend_id_;
5230 const int bytecode_offset_;
5242 loop_depth_(loop_depth),
5243 feedback_slot_(feedback_slot),
5244 osr_offset_(osr_offset),
5356 const int load_slot_;
5357 const int call_slot_;
5399 using CheckTypeBitField = NextBitField<CheckType, 1>;
5408 :
Base(ConversionModeBitField::update(bitfield,
mode)) {}
5418 return ConversionModeBitField::decode(bitfield());
5427 using ConversionModeBitField = NextBitField<ConversionMode, 1>;
5606 return object_.IsTheHole();
5759 return boilerplate_descriptor_;
5798 return boilerplate_descriptor_;
5845 out <<
"ConsString";
5918 uint32_t
id()
const {
return id_; }
5980 int last_init_index = last_init_slot /
kTaggedSize;
5992 if (type_ != other->type_)
return false;
5993 if (allocation_ != other->allocation_)
return false;
5996 if (
map() != other->
map())
return false;
5998 switch (other->type_) {
6015 template <
typename Function>
6035 template <
typename Function>
6057 template <
typename Function>
6060 template <
typename Function>
6064 template <
typename Function>
6066 uint32_t new_object_id,
Zone* zone,
6079 MergeValue(get_by_index(
i), other->get_by_index(
i))) {
6080 result->set_by_index(
i, *success);
6092 bool empty_clone =
false)
const {
6101 result = NodeBase::New<VirtualObject>(zone, 0,
map(), new_object_id,
6106 if (empty_clone)
return result;
6116 result->set_by_index(
i, get_by_index(
i));
6136 void set_by_index(uint32_t
i, ValueNode*
value) {
6144 struct DoubleArray {
6146 compiler::FixedDoubleArrayRef values;
6153 compiler::OptionalMapRef map_;
6158 bool snapshotted_ =
false;
6180 entry_ = entry_->next_;
6184 return entry_ == other.entry_;
6187 return entry_ != other.entry_;
6197 return head_ == other.head_;
6203 object->next_ = head_;
6220 void Print(std::ostream& os,
const char* prefix,
6224 template <
typename Function>
6230 while (vo1 !=
nullptr && vo2 !=
nullptr && vo1 != vo2) {
6232 if (vo1->
id() > vo2->
id()) {
6240 if (vo1 == vo2)
return vo1;
6313 non_escaping_use_count_ = std::max(non_escaping_use_count_ -
n, 0);
6317 non_escaping_use_count_ +=
n;
6321 return use_count_ > non_escaping_use_count_;
6325 non_escaping_use_count_ = 0;
6339 DCHECK_GE(use_count_, non_escaping_use_count_);
6356 void set_is_returned_value_from_inline_call() {
6357 is_returned_value_from_inline_call_ =
true;
6360 bool is_returned_value_from_inline_call()
const {
6361 return is_returned_value_from_inline_call_;
6366 VirtualObject* object_;
6368 int non_escaping_use_count_ = 0;
6372 bool is_returned_value_from_inline_call_ =
false;
6379 friend base::ThreadedListTraits<InlinedAllocation>;
6382 template <
typename Function>
6387 value = value->input(0).node();
6394 switch (
value->opcode()) {
6395 case Opcode::kArgumentsElements:
6396 case Opcode::kArgumentsLength:
6397 case Opcode::kRestLength:
6400 case Opcode::kVirtualObject:
6402 case Opcode::kInlinedAllocation: {
6403 InlinedAllocation* alloc = value->Cast<InlinedAllocation>();
6404 VirtualObject* inner_vobject = virtual_objects.FindAllocatedWith(alloc);
6406 if (inner_vobject &&
6407 (!alloc->HasBeenAnalysed() || alloc->HasBeenElided())) {
6408 inner_vobject->ForEachNestedRuntimeInput(virtual_objects, f);
6421 template <
typename Function>
6422 inline void VirtualObject::ForEachNestedRuntimeInput(
6426 value = value->input(0).node();
6433 switch (
value->opcode()) {
6434 case Opcode::kArgumentsElements:
6435 case Opcode::kArgumentsLength:
6436 case Opcode::kRestLength:
6439 case Opcode::kVirtualObject:
6441 case Opcode::kInlinedAllocation: {
6442 InlinedAllocation* alloc = value->Cast<InlinedAllocation>();
6443 VirtualObject* inner_vobject = virtual_objects.FindAllocatedWith(alloc);
6445 if (inner_vobject &&
6446 (!alloc->HasBeenAnalysed() || alloc->HasBeenElided())) {
6447 inner_vobject->ForEachNestedRuntimeInput(virtual_objects, f);
6465 :
Base(bitfield), allocation_type_(allocation_type) {}
6468 OpProperties::DeferredCall() |
6469 OpProperties::NotIdempotent();
6483 allocation_list_.Add(alloc);
6484 size_ += alloc->
size();
6490 return elided_write_barriers_depend_on_type_;
6493 elided_write_barriers_depend_on_type_ =
true;
6497 void TryPretenure();
6500 bool elided_write_barriers_depend_on_type_ =
false;
6512 void SetValueLocationConstraints();
6521 explicit RestLength(uint64_t bitfield,
int formal_parameter_count)
6522 :
Base(bitfield), formal_parameter_count_(formal_parameter_count) {}
6524 void SetValueLocationConstraints();
6530 auto options()
const {
return std::tuple{formal_parameter_count_}; }
6533 int formal_parameter_count_;
6541 int formal_parameter_count)
6544 formal_parameter_count_(formal_parameter_count) {}
6547 OpProperties::CanAllocate() |
6548 OpProperties::NotIdempotent();
6565 int formal_parameter_count_;
6577 :
Base(bitfield), allocation_type_(allocation_type) {}
6580 OpProperties::CanAllocate() | OpProperties::EagerDeopt() |
6581 OpProperties::DeferredCall() | OpProperties::NotIdempotent();
6606 uint32_t slot_count,
ScopeType scope_type)
6608 scope_info_(scope_info),
6609 slot_count_(slot_count),
6610 scope_type_(scope_type) {}
6620 OpProperties::Call() | OpProperties::CanAllocate() |
6621 OpProperties::LazyDeopt() | OpProperties::NotIdempotent();
6632 const uint32_t slot_count_;
6644 shared_function_info_(shared_function_info),
6645 feedback_cell_(feedback_cell) {}
6648 return shared_function_info_;
6656 OpProperties::Call() | OpProperties::CanAllocate() |
6657 OpProperties::LazyDeopt() | OpProperties::NotIdempotent();
6687 OpProperties::Call() | OpProperties::CanAllocate() |
6710 shared_function_info_(shared_function_info),
6711 feedback_cell_(feedback_cell),
6712 pretenured_(pretenured) {}
6715 return shared_function_info_;
6724 OpProperties::CanAllocate() |
6725 OpProperties::NotIdempotent();
6737 const bool pretenured_;
6740 #define ASSERT_CONDITION(V) \
6746 V(GreaterThanEqual) \
6747 V(UnsignedLessThan) \
6748 V(UnsignedLessThanEqual) \
6749 V(UnsignedGreaterThan) \
6750 V(UnsignedGreaterThanEqual)
6753 #define D(Name) k##Name,
6757 static constexpr
int kNumAssertConditions =
6764 #define CASE(Name) \
6765 case AssertCondition::k##Name: \
6783 ValueRepresentation::kInt32, ValueRepresentation::kInt32};
6792 auto options()
const {
return std::tuple{condition_, reason_}; }
6808 :
Base(CheckTypeBitField::update(bitfield, check_type)), maps_(maps) {}
6812 :
Base(CheckTypeBitField::update(bitfield, check_type)),
6813 maps_(maps.
begin(), maps.
end(), zone) {}
6816 OpProperties::EagerDeopt() | OpProperties::CanRead();
6823 static constexpr
int kReceiverIndex = 0;
6830 auto options()
const {
return std::tuple{maps_, check_type()}; }
6833 using CheckTypeBitField = NextBitField<CheckType, 1>;
6845 :
Base(CheckTypeBitField::update(bitfield, check_type)), maps_(maps) {}
6849 :
Base(CheckTypeBitField::update(bitfield, check_type)),
6850 maps_(maps.
begin(), maps.
end(), zone) {}
6853 OpProperties::EagerDeopt() | OpProperties::DeferredCall() |
6854 OpProperties::CanAllocate() | OpProperties::CanWrite() |
6855 OpProperties::CanRead();
6863 static constexpr
int kReceiverIndex = 0;
6871 auto options()
const {
return std::tuple{maps_, check_type()}; }
6874 using CheckTypeBitField = NextBitField<CheckType, 1>;
6885 :
Base(bitfield), maps_(maps) {}
6888 :
Base(bitfield), maps_(maps.
begin(), maps.
end(), zone) {}
6891 OpProperties::EagerDeopt() | OpProperties::CanRead();
6893 ValueRepresentation::kTagged, ValueRepresentation::kTagged};
6904 auto options()
const {
return std::tuple{maps_}; }
6916 :
Base(bitfield | ReasonField::encode(reason)), value_(
value) {}
6924 static constexpr
int kTargetIndex = 0;
6927 #ifdef V8_COMPRESS_POINTERS
6928 void MarkTaggedInputsAsDecompressing() {
6937 auto options()
const {
return std::tuple{value_, deoptimize_reason()}; }
6951 :
Base(bitfield | ReasonField::encode(reason)), value_(
value) {}
6959 static constexpr
int kTargetIndex = 0;
6966 auto options()
const {
return std::tuple{value_, deoptimize_reason()}; }
6980 :
Base(bitfield | ReasonField::encode(reason)), value_(
value) {}
6988 static constexpr
int kTargetIndex = 0;
6991 void SetValueLocationConstraints();
6995 auto options()
const {
return std::tuple{value_, deoptimize_reason()}; }
7011 :
Base(bitfield | ReasonField::encode(reason)), value_(
value) {}
7015 OpProperties::EagerDeopt() |
7016 OpProperties::DeferredCall();
7022 static constexpr
int kTargetIndex = 0;
7030 auto options()
const {
return std::tuple{value_, deoptimize_reason()}; }
7043 :
Base(bitfield | ReasonField::encode(reason)) {}
7047 ValueRepresentation::kTagged, ValueRepresentation::kTagged};
7049 static constexpr
int kFirstIndex = 0;
7050 static constexpr
int kSecondIndex = 1;
7054 #ifdef V8_COMPRESS_POINTERS
7055 void MarkTaggedInputsAsDecompressing() {
7064 auto options()
const {
return std::tuple{deoptimize_reason()}; }
7079 static constexpr
int kReceiverIndex = 0;
7082 using Node::set_input;
7084 #ifdef V8_COMPRESS_POINTERS
7085 void MarkTaggedInputsAsDecompressing() {
7106 static constexpr
int kReceiverIndex = 0;
7114 auto options()
const {
return std::tuple{mode_}; }
7130 static constexpr
int kReceiverIndex = 0;
7133 #ifdef V8_COMPRESS_POINTERS
7134 void MarkTaggedInputsAsDecompressing() {
7149 :
Base(CheckTypeBitField::update(bitfield, check_type)) {}
7155 static constexpr
int kReceiverIndex = 0;
7163 auto options()
const {
return std::tuple{check_type()}; }
7166 using CheckTypeBitField = NextBitField<CheckType, 1>;
7176 :
Base(CheckTypeBitField::update(bitfield, check_type)),
7177 first_instance_type_(first_instance_type),
7178 last_instance_type_(last_instance_type) {
7179 DCHECK_LE(first_instance_type, last_instance_type);
7186 static constexpr
int kReceiverIndex = 0;
7196 return std::tuple{check_type(), first_instance_type_, last_instance_type_};
7203 using CheckTypeBitField = NextBitField<CheckType, 1>;
7213 :
Base(CheckTypeBitField::update(bitfield, check_type)) {}
7219 static constexpr
int kReceiverIndex = 0;
7227 auto options()
const {
return std::tuple{check_type()}; }
7230 using CheckTypeBitField = NextBitField<CheckType, 1>;
7238 :
Base(CheckTypeBitField::update(bitfield, check_type)) {}
7244 static constexpr
int kReceiverIndex = 0;
7252 auto options()
const {
return std::tuple{check_type()}; }
7255 using CheckTypeBitField = NextBitField<CheckType, 1>;
7264 :
Base(CheckTypeBitField::update(bitfield, check_type)) {}
7270 static constexpr
int kReceiverIndex = 0;
7278 auto options()
const {
return std::tuple{check_type()}; }
7281 using CheckTypeBitField = NextBitField<CheckType, 1>;
7289 :
Base(CheckTypeBitField::update(bitfield, check_type)) {}
7295 static constexpr
int kReceiverIndex = 0;
7303 auto options()
const {
return std::tuple{check_type()}; }
7306 using CheckTypeBitField = NextBitField<CheckType, 1>;
7315 :
Base(CheckTypeBitField::update(bitfield, check_type)) {}
7321 static constexpr
int kReceiverIndex = 0;
7329 auto options()
const {
return std::tuple{check_type()}; }
7332 using CheckTypeBitField = NextBitField<CheckType, 1>;
7343 :
Base(CheckTypeBitField::update(bitfield, check_type)), maps_(maps) {}
7346 OpProperties::EagerDeopt() | OpProperties::DeferredCall() |
7347 OpProperties::CanAllocate() | OpProperties::CanWrite() |
7348 OpProperties::CanRead();
7354 static constexpr
int kReceiverIndex = 0;
7366 using CheckTypeBitField = NextBitField<CheckType, 1>;
7377 OpProperties::EagerDeopt() | OpProperties::DeferredCall() |
7378 OpProperties::CanAllocate() | OpProperties::CanWrite() |
7379 OpProperties::CanRead();
7382 ValueRepresentation::kTagged, ValueRepresentation::kTagged};
7384 static constexpr
int kMapIndex = 0;
7385 static constexpr
int kObjectIndex = 1;
7405 OpProperties::EagerDeopt() | OpProperties::CanRead();
7407 ValueRepresentation::kTagged, ValueRepresentation::kInt32};
7409 static constexpr
int kEnumIndices = 0;
7411 static constexpr
int kCacheLength = 1;
7425 :
Base(bitfield), element_type_(element_type) {}
7429 ValueRepresentation::kTagged, ValueRepresentation::kInt32};
7431 static constexpr
int kReceiverIndex = 0;
7432 static constexpr
int kIndexIndex = 1;
7436 int MaxCallStackArgs()
const;
7437 void SetValueLocationConstraints();
7441 auto options()
const {
return std::tuple{element_type_}; }
7455 :
Base(bitfield), elements_kind_(elements_kind) {}
7457 OpProperties::IntPtr() | OpProperties::CanRead();
7461 static constexpr
int kReceiverIndex = 0;
7464 void SetValueLocationConstraints();
7468 auto options()
const {
return std::tuple{elements_kind_}; }
7483 OpProperties::EagerDeopt() | OpProperties::CanRead();
7487 static constexpr
int kObjectIndex = 0;
7502 ValueRepresentation::kUint32, ValueRepresentation::kIntPtr};
7504 static constexpr
int kIndexIndex = 0;
7505 static constexpr
int kLengthIndex = 1;
7521 ReasonField::encode(reason)) {}
7525 ValueRepresentation::kInt32, ValueRepresentation::kInt32};
7527 static constexpr
int kLeftIndex = 0;
7528 static constexpr
int kRightIndex = 1;
7533 return ConditionField::decode(bitfield());
7545 using ConditionField =
7546 ReasonField::Next<AssertCondition, base::bits::WhichPowerOfTwo<size_t>(
7547 base::bits::RoundUpToPowerOfTwo32(
7548 kNumAssertConditions))>;
7575 explicit Dead(uint64_t bitfield) : Base(bitfield) {}
7590 OpProperties::LazyDeopt() | OpProperties::CanAllocate() |
7591 OpProperties::DeferredCall() | OpProperties::NotIdempotent();
7605 :
Base(CheckTypeBitField::update(bitfield, check_type)) {
7606 CHECK_EQ(properties().value_representation(), ValueRepresentation::kTagged);
7610 OpProperties::EagerDeopt() | OpProperties::TaggedValue();
7614 static constexpr
int kObjectIndex = 0;
7622 auto options()
const {
return std::tuple{check_type()}; }
7625 using CheckTypeBitField = NextBitField<CheckType, 1>;
7634 :
Base(CheckTypeBitField::update(bitfield, check_type)) {}
7637 OpProperties::EagerDeopt() | OpProperties::Int32() |
7638 OpProperties::DeferredCall() | OpProperties::ConversionNode();
7642 static constexpr
int kObjectIndex = 0;
7646 int MaxCallStackArgs()
const;
7651 auto options()
const {
return std::tuple{check_type()}; }
7654 using CheckTypeBitField = NextBitField<CheckType, 1>;
7665 shared_function_info_(shared_function_info),
7666 feedback_(feedback) {}
7670 OpProperties::GenericRuntimeOrBuiltinCall();
7677 return shared_function_info_;
7703 OpProperties::DeferredCall() | OpProperties::CanCallUserCode();
7728 OpProperties::CanAllocate() | OpProperties::DeferredCall();
7734 int MaxCallStackArgs()
const;
7735 void SetValueLocationConstraints();
7742 BuiltinStringPrototypeCharCodeOrCodePointAt> {
7754 :
Base(bitfield | ModeField::encode(
mode)) {}
7757 OpProperties::CanAllocate() | OpProperties::CanRead() |
7758 OpProperties::DeferredCall() | OpProperties::Int32();
7760 ValueRepresentation::kTagged, ValueRepresentation::kInt32};
7762 static constexpr
int kStringIndex = 0;
7763 static constexpr
int kIndexIndex = 1;
7774 Mode mode()
const {
return ModeField::decode(bitfield()); }
7777 using ModeField = NextBitField<Mode, 1>;
7789 OpProperties::CanRead() | OpProperties::Int32();
7791 ValueRepresentation::kTagged, ValueRepresentation::kInt32};
7793 static constexpr
int kStringIndex = 0;
7794 static constexpr
int kIndexIndex = 1;
7810 OpProperties::Call() | OpProperties::CanAllocate() |
7811 OpProperties::CanRead() | OpProperties::TaggedValue();
7813 ValueRepresentation::kTagged, ValueRepresentation::kTagged};
7836 OpProperties::CanRead() |
7837 OpProperties::TaggedValue();
7839 ValueRepresentation::kTagged, ValueRepresentation::kInt32};
7858 OpProperties::Call() | OpProperties::CanAllocate() |
7859 OpProperties::CanRead() | OpProperties::TaggedValue();
7861 ValueRepresentation::kTagged, ValueRepresentation::kTagged};
7883 :
Base(bitfield), allocation_type_(allocation_type) {}
7888 OpProperties::CanAllocate() | OpProperties::NotIdempotent();
7911 :
Base(bitfield), fast_map_(fast_map), double_map_(double_map) {}
7914 OpProperties::AnySideEffects() | OpProperties::DeferredCall();
7916 ValueRepresentation::kTagged, ValueRepresentation::kInt32,
7917 ValueRepresentation::kTagged};
7966 compiler::OptionalJSObjectRef holder,
FieldIndex field_index) {
7986 return constant_.object();
7991 return constant_double_.get_scalar();
7996 return constant_.AsCell().object();
7999 compiler::OptionalJSObjectRef
holder()
const {
8001 return data_load_.holder_;
8006 return data_load_.field_index_;
8012 if (kind_ != other.kind_ || !(representation_ == other.representation_)) {
8015 if (maps_.size() != other.maps_.size()) {
8018 for (
size_t i = 0;
i < maps_.size(); ++
i) {
8019 if (maps_[
i] != other.maps_[
i]) {
8029 return constant_.equals(other.
constant_);
8030 case kConstantDouble:
8033 return data_load_.holder_.equals(other.
data_load_.holder_) &&
8034 data_load_.field_index_ == other.
data_load_.field_index_;
8041 for (
auto map : maps()) {
8052 case kConstantDouble:
8069 : kind_(
kind), maps_(maps), representation_(representation) {
8075 compiler::ObjectRef constant)
8078 representation_(representation),
8079 constant_(constant) {
8083 PolymorphicAccessInfo(Kind
kind,
const ZoneVector<compiler::MapRef>& maps,
8087 representation_(Representation::Double()),
8088 constant_double_(constant) {
8092 PolymorphicAccessInfo(Kind
kind,
const ZoneVector<compiler::MapRef>& maps,
8093 Representation representation,
8094 compiler::OptionalJSObjectRef holder,
8095 FieldIndex field_index)
8098 representation_(representation),
8099 data_load_{holder, field_index} {
8105 const ZoneVector<compiler::MapRef> maps_;
8106 const Representation representation_;
8117 template <
typename Derived = LoadTaggedField>
8133 static constexpr
int kObjectIndex = 0;
8142 using Base::decompresses_tagged_result;
8191 OpProperties::CanAllocate() |
8192 OpProperties::DeferredCall();
8199 static constexpr
int kContextIndex = 0;
8209 using Base::decompresses_tagged_result;
8229 static constexpr
int kObjectIndex = 0;
8256 static constexpr
int kObjectIndex = 0;
8277 OpProperties::CanRead() | OpProperties::Int32();
8283 static constexpr
int kObjectIndex = 0;
8304 OpProperties::CanRead() |
8305 OpProperties::DeferredCall();
8307 ValueRepresentation::kTagged, ValueRepresentation::kTagged};
8309 static constexpr
int kObjectIndex = 0;
8310 static constexpr
int kIndexIndex = 1;
8314 #ifdef V8_COMPRESS_POINTERS
8315 void MarkTaggedInputsAsDecompressing() {
8317 object_input().node()->SetTaggedResultNeedsDecompress();
8336 ValueRepresentation::kTagged, ValueRepresentation::kInt32};
8338 static constexpr
int kElementsIndex = 0;
8339 static constexpr
int kIndexIndex = 1;
8356 OpProperties::DeferredCall() |
8357 OpProperties::CanWrite();
8359 ValueRepresentation::kTagged, ValueRepresentation::kTagged};
8361 static constexpr
int kElementsIndex = 0;
8362 static constexpr
int kObjectIndex = 1;
8378 :
Base(bitfield), old_length_(old_length) {}
8381 OpProperties::CanAllocate() | OpProperties::CanRead() |
8382 OpProperties::CanWrite() | OpProperties::DeferredCall() |
8383 OpProperties::EagerDeopt() | OpProperties::NotIdempotent();
8386 ValueRepresentation::kTagged, ValueRepresentation::kTagged};
8388 static constexpr
int kPropertyArrayIndex = 0;
8389 static constexpr
int kObjectIndex = 1;
8401 const int old_length_;
8410 :
Base(bitfield), elements_kind_(elements_kind) {}
8413 OpProperties::CanAllocate() | OpProperties::DeferredCall() |
8414 OpProperties::CanWrite() | OpProperties::EagerDeopt();
8416 ValueRepresentation::kTagged, ValueRepresentation::kTagged,
8417 ValueRepresentation::kInt32, ValueRepresentation::kInt32};
8419 static constexpr
int kElementsIndex = 0;
8420 static constexpr
int kObjectIndex = 1;
8421 static constexpr
int kIndexIndex = 2;
8422 static constexpr
int kElementsLengthIndex = 3;
8435 auto options()
const {
return std::tuple{elements_kind()}; }
8450 OpProperties::CanWrite() | OpProperties::DeferredCall();
8452 ValueRepresentation::kTagged, ValueRepresentation::kInt32,
8453 ValueRepresentation::kTagged};
8455 static constexpr
int kElementsIndex = 0;
8456 static constexpr
int kIndexIndex = 1;
8457 static constexpr
int kValueIndex = 2;
8483 OpProperties::CanWrite() | OpProperties::DeferredCall();
8485 ValueRepresentation::kTagged, ValueRepresentation::kInt32,
8486 ValueRepresentation::kTagged};
8488 static constexpr
int kElementsIndex = 0;
8489 static constexpr
int kIndexIndex = 1;
8490 static constexpr
int kValueIndex = 2;
8514 ValueRepresentation::kTagged, ValueRepresentation::kInt32};
8516 static constexpr
int kElementsIndex = 0;
8517 static constexpr
int kIndexIndex = 1;
8537 ValueRepresentation::kTagged, ValueRepresentation::kInt32};
8539 static constexpr
int kElementsIndex = 0;
8540 static constexpr
int kIndexIndex = 1;
8551 2, LoadHoleyFixedDoubleArrayElementCheckedNotHole> {
8561 OpProperties::EagerDeopt();
8563 ValueRepresentation::kTagged, ValueRepresentation::kInt32};
8565 static constexpr
int kElementsIndex = 0;
8566 static constexpr
int kIndexIndex = 1;
8584 ValueRepresentation::kTagged, ValueRepresentation::kInt32,
8585 ValueRepresentation::kHoleyFloat64};
8587 static constexpr
int kElementsIndex = 0;
8588 static constexpr
int kIndexIndex = 1;
8589 static constexpr
int kValueIndex = 2;
8613 OpProperties::CanRead() | OpProperties::Int32();
8615 ValueRepresentation::kTagged, ValueRepresentation::kInt32,
8616 ValueRepresentation::kTagged};
8618 static constexpr
int kObjectIndex = 0;
8619 static constexpr
int kIndexIndex = 1;
8620 static constexpr
int kIsLittleEndianIndex = 2;
8656 ValueRepresentation::kTagged, ValueRepresentation::kInt32,
8657 ValueRepresentation::kTagged};
8659 static constexpr
int kObjectIndex = 0;
8660 static constexpr
int kIndexIndex = 1;
8661 static constexpr
int kIsLittleEndianIndex = 2;
8677 #define LOAD_TYPED_ARRAY(name, properties, ...) \
8678 class name : public FixedInputValueNodeT<2, name> { \
8679 using Base = FixedInputValueNodeT<2, name>; \
8682 explicit name(uint64_t bitfield, ElementsKind elements_kind) \
8683 : Base(bitfield), elements_kind_(elements_kind) { \
8684 DCHECK(elements_kind == \
8685 v8::internal::compiler::turboshaft::any_of(__VA_ARGS__)); \
8688 static constexpr OpProperties kProperties = \
8689 OpProperties::CanRead() | properties; \
8690 static constexpr typename Base::InputTypes kInputTypes{ \
8691 ValueRepresentation::kTagged, ValueRepresentation::kUint32}; \
8693 static constexpr int kObjectIndex = 0; \
8694 static constexpr int kIndexIndex = 1; \
8695 Input& object_input() { return input(kObjectIndex); } \
8696 Input& index_input() { return input(kIndexIndex); } \
8698 void SetValueLocationConstraints(); \
8699 void GenerateCode(MaglevAssembler*, const ProcessingState&); \
8700 void PrintParams(std::ostream&, MaglevGraphLabeller*) const {} \
8702 auto options() const { return std::tuple{elements_kind_}; } \
8704 ElementsKind elements_kind() const { return elements_kind_; } \
8707 ElementsKind elements_kind_; \
8720 #undef LOAD_TYPED_ARRAY
8722 #define LOAD_CONSTANT_TYPED_ARRAY(name, properties, ...) \
8723 class name : public FixedInputValueNodeT<1, name> { \
8724 using Base = FixedInputValueNodeT<1, name>; \
8727 explicit name(uint64_t bitfield, compiler::JSTypedArrayRef typed_array, \
8728 ElementsKind elements_kind) \
8730 typed_array_(typed_array), \
8731 elements_kind_(elements_kind) { \
8732 DCHECK(elements_kind == \
8733 v8::internal::compiler::turboshaft::any_of(__VA_ARGS__)); \
8736 static constexpr OpProperties kProperties = \
8737 OpProperties::CanRead() | properties; \
8739 typename Base::InputTypes kInputTypes{ValueRepresentation::kUint32}; \
8741 static constexpr int kIndexIndex = 0; \
8742 Input& index_input() { return input(kIndexIndex); } \
8744 void SetValueLocationConstraints(); \
8745 void GenerateCode(MaglevAssembler*, const ProcessingState&); \
8746 void PrintParams(std::ostream&, MaglevGraphLabeller*) const {} \
8748 auto options() const { return std::tuple{typed_array_, elements_kind_}; } \
8750 ElementsKind elements_kind() const { return elements_kind_; } \
8751 compiler::JSTypedArrayRef typed_array() const { return typed_array_; } \
8754 compiler::JSTypedArrayRef typed_array_; \
8755 ElementsKind elements_kind_; \
8771 #undef LOAD_CONSTANT_TYPED_ARRAY
8773 #define STORE_TYPED_ARRAY(name, properties, type, ...) \
8774 class name : public FixedInputNodeT<3, name> { \
8775 using Base = FixedInputNodeT<3, name>; \
8778 explicit name(uint64_t bitfield, ElementsKind elements_kind) \
8779 : Base(bitfield), elements_kind_(elements_kind) { \
8780 DCHECK(elements_kind == \
8781 v8::internal::compiler::turboshaft::any_of(__VA_ARGS__)); \
8784 static constexpr OpProperties kProperties = properties; \
8785 static constexpr typename Base::InputTypes kInputTypes{ \
8786 ValueRepresentation::kTagged, ValueRepresentation::kUint32, type}; \
8788 static constexpr int kObjectIndex = 0; \
8789 static constexpr int kIndexIndex = 1; \
8790 static constexpr int kValueIndex = 2; \
8791 Input& object_input() { return input(kObjectIndex); } \
8792 Input& index_input() { return input(kIndexIndex); } \
8793 Input& value_input() { return input(kValueIndex); } \
8795 void SetValueLocationConstraints(); \
8796 void GenerateCode(MaglevAssembler*, const ProcessingState&); \
8797 void PrintParams(std::ostream&, MaglevGraphLabeller*) const {} \
8799 ElementsKind elements_kind() const { return elements_kind_; } \
8802 ElementsKind elements_kind_; \
8812 #undef STORE_TYPED_ARRAY
8814 #define STORE_CONSTANT_TYPED_ARRAY(name, properties, type, ...) \
8815 class name : public FixedInputNodeT<2, name> { \
8816 using Base = FixedInputNodeT<2, name>; \
8819 explicit name(uint64_t bitfield, compiler::JSTypedArrayRef typed_array, \
8820 ElementsKind elements_kind) \
8822 typed_array_(typed_array), \
8823 elements_kind_(elements_kind) { \
8824 DCHECK(elements_kind == \
8825 v8::internal::compiler::turboshaft::any_of(__VA_ARGS__)); \
8828 static constexpr OpProperties kProperties = properties; \
8829 static constexpr typename Base::InputTypes kInputTypes{ \
8830 ValueRepresentation::kUint32, type}; \
8832 static constexpr int kIndexIndex = 0; \
8833 static constexpr int kValueIndex = 1; \
8834 Input& index_input() { return input(kIndexIndex); } \
8835 Input& value_input() { return input(kValueIndex); } \
8837 void SetValueLocationConstraints(); \
8838 void GenerateCode(MaglevAssembler*, const ProcessingState&); \
8839 void PrintParams(std::ostream&, MaglevGraphLabeller*) const {} \
8841 ElementsKind elements_kind() const { return elements_kind_; } \
8842 compiler::JSTypedArrayRef typed_array() const { return typed_array_; } \
8845 compiler::JSTypedArrayRef typed_array_; \
8846 ElementsKind elements_kind_; \
8850 OpProperties::CanWrite(),
8856 OpProperties::CanWrite(),
8859 #undef STORE_CONSTANT_TYPED_ARRAY
8876 ValueRepresentation::kTagged, ValueRepresentation::kInt32,
8877 ValueRepresentation::kInt32, ValueRepresentation::kTagged};
8879 static constexpr
int kObjectIndex = 0;
8880 static constexpr
int kIndexIndex = 1;
8881 static constexpr
int kValueIndex = 2;
8882 static constexpr
int kIsLittleEndianIndex = 3;
8914 ValueRepresentation::kTagged, ValueRepresentation::kInt32,
8915 ValueRepresentation::kHoleyFloat64, ValueRepresentation::kTagged};
8917 static constexpr
int kObjectIndex = 0;
8918 static constexpr
int kIndexIndex = 1;
8919 static constexpr
int kValueIndex = 2;
8920 static constexpr
int kIsLittleEndianIndex = 3;
8944 ValueRepresentation::kTagged, ValueRepresentation::kFloat64};
8948 static constexpr
int kObjectIndex = 0;
8949 static constexpr
int kValueIndex = 1;
8970 ValueRepresentation::kTagged, ValueRepresentation::kInt32};
8974 static constexpr
int kObjectIndex = 0;
8975 static constexpr
int kValueIndex = 1;
8996 ValueRepresentation::kTagged, ValueRepresentation::kFloat64};
9000 static constexpr
int kObjectIndex = 0;
9001 static constexpr
int kValueIndex = 1;
9019 return mode == StoreTaggedMode::kInitializing ||
9020 mode == StoreTaggedMode::kTransitioning;
9030 :
Base(bitfield | InitializingOrTransitioningField::encode(
9041 OpProperties::CanWrite() | OpProperties::DeferredCall();
9043 ValueRepresentation::kTagged, ValueRepresentation::kTagged};
9047 return InitializingOrTransitioningField::decode(bitfield());
9050 static constexpr
int kObjectIndex = 0;
9051 static constexpr
int kValueIndex = 1;
9055 #ifdef V8_COMPRESS_POINTERS
9056 void MarkTaggedInputsAsDecompressing() {
9057 object_input().node()->SetTaggedResultNeedsDecompress();
9073 using InitializingOrTransitioningField = NextBitField<bool, 1>;
9091 OpProperties::CanWrite() | OpProperties::DeferredCall();
9095 static constexpr
int kObjectIndex = 0;
9099 Kind kind()
const {
return KindField::decode(bitfield()); }
9109 using KindField = NextBitField<Kind, 3>;
9121 :
Base(bitfield | InitializingOrTransitioningField::encode(
9126 OpProperties::CanWrite() | OpProperties::DeferredCall();
9128 ValueRepresentation::kTagged, ValueRepresentation::kTagged};
9132 return InitializingOrTransitioningField::decode(bitfield());
9135 static constexpr
int kObjectIndex = 0;
9136 static constexpr
int kValueIndex = 1;
9140 #ifdef V8_COMPRESS_POINTERS
9141 void MarkTaggedInputsAsDecompressing() {
9142 object_input().node()->SetTaggedResultNeedsDecompress();
9153 using InitializingOrTransitioningField = NextBitField<bool, 1>;
9167 OpProperties::DeferredCall() |
9168 OpProperties::LazyDeopt();
9170 ValueRepresentation::kTagged, ValueRepresentation::kTagged};
9175 static constexpr
int kContextIndex = 0;
9176 static constexpr
int kNewValueIndex = 1;
9180 #ifdef V8_COMPRESS_POINTERS
9181 void MarkTaggedInputsAsDecompressing() {
9182 context_input().node()->SetTaggedResultNeedsDecompress();
9183 new_value_input().node()->SetTaggedResultNeedsDecompress();
9197 :
public FixedInputNodeT<2, StoreTrustedPointerFieldWithWriteBarrier> {
9205 :
Base(bitfield | InitializingOrTransitioningField::encode(
9211 OpProperties::CanWrite() | OpProperties::DeferredCall();
9213 ValueRepresentation::kTagged, ValueRepresentation::kTagged};
9218 return InitializingOrTransitioningField::decode(bitfield());
9221 static constexpr
int kObjectIndex = 0;
9222 static constexpr
int kValueIndex = 1;
9226 #ifdef V8_COMPRESS_POINTERS
9227 void MarkTaggedInputsAsDecompressing() {
9228 object_input().node()->SetTaggedResultNeedsDecompress();
9239 using InitializingOrTransitioningField = NextBitField<bool, 1>;
9254 feedback_(feedback),
9255 typeof_mode_(typeof_mode) {}
9285 :
Base(bitfield), name_(
name), feedback_(feedback) {}
9290 ValueRepresentation::kTagged, ValueRepresentation::kTagged};
9317 ValueRepresentation::kInt32, ValueRepresentation::kTagged,
9318 ValueRepresentation::kInt32};
9324 static constexpr
int kLengthIndex = 0;
9325 static constexpr
int kObjectIndex = 1;
9326 static constexpr
int kIndexIndex = 2;
9342 :
Base(bitfield), name_(
name), feedback_(feedback) {}
9347 ValueRepresentation::kTagged, ValueRepresentation::kTagged};
9352 static constexpr
int kContextIndex = 0;
9353 static constexpr
int kObjectIndex = 1;
9374 :
Base(bitfield), name_(
name), feedback_(feedback) {}
9379 ValueRepresentation::kTagged, ValueRepresentation::kTagged,
9380 ValueRepresentation::kTagged};
9385 static constexpr
int kContextIndex = 0;
9386 static constexpr
int kReceiverIndex = 1;
9387 static constexpr
int kLookupStartObjectIndex = 2;
9408 :
Base(bitfield), name_(
name), feedback_(feedback) {}
9413 ValueRepresentation::kTagged, ValueRepresentation::kTagged,
9414 ValueRepresentation::kTagged};
9419 static constexpr
int kContextIndex = 0;
9420 static constexpr
int kObjectIndex = 1;
9421 static constexpr
int kValueIndex = 2;
9444 OpProperties::CanRead() | OpProperties::Int32();
9448 static constexpr
int kMapInput = 0;
9463 OpProperties::CanAllocate() |
9464 OpProperties::DeferredCall();
9466 ValueRepresentation::kTagged, ValueRepresentation::kInt32};
9468 static constexpr
int kStringIndex = 0;
9469 static constexpr
int kIndexIndex = 1;
9487 ValueRepresentation::kTagged, ValueRepresentation::kInt32};
9489 static constexpr
int kStringIndex = 0;
9490 static constexpr
int kIndexIndex = 1;
9506 OpProperties::CanRead() | OpProperties::Int32();
9510 static constexpr
int kObjectIndex = 0;
9526 OpProperties::Call() | OpProperties::CanAllocate() |
9529 ValueRepresentation::kTagged, ValueRepresentation::kTagged};
9559 ValueRepresentation::kTagged, ValueRepresentation::kTagged};
9564 #ifdef V8_STATIC_ROOTS
9565 void MarkTaggedInputsAsDecompressing()
const {
9603 :
Base(bitfield), name_(
name), feedback_(feedback) {}
9608 ValueRepresentation::kTagged, ValueRepresentation::kTagged,
9609 ValueRepresentation::kTagged};
9614 static constexpr
int kContextIndex = 0;
9615 static constexpr
int kObjectIndex = 1;
9616 static constexpr
int kValueIndex = 2;
9638 :
Base(bitfield), feedback_(feedback) {}
9643 ValueRepresentation::kTagged, ValueRepresentation::kTagged,
9644 ValueRepresentation::kTagged, ValueRepresentation::kTagged};
9648 static constexpr
int kContextIndex = 0;
9649 static constexpr
int kObjectIndex = 1;
9650 static constexpr
int kNameIndex = 2;
9651 static constexpr
int kValueIndex = 3;
9672 :
Base(bitfield), feedback_(feedback) {}
9677 ValueRepresentation::kTagged, ValueRepresentation::kTagged,
9678 ValueRepresentation::kTagged};
9682 static constexpr
int kContextIndex = 0;
9683 static constexpr
int kObjectIndex = 1;
9684 static constexpr
int kKeyIndex = 2;
9704 :
Base(bitfield), feedback_(feedback) {}
9709 ValueRepresentation::kTagged, ValueRepresentation::kTagged,
9710 ValueRepresentation::kTagged, ValueRepresentation::kTagged};
9714 static constexpr
int kContextIndex = 0;
9715 static constexpr
int kObjectIndex = 1;
9716 static constexpr
int kKeyIndex = 2;
9717 static constexpr
int kValueIndex = 3;
9739 :
Base(bitfield), feedback_(feedback) {}
9744 ValueRepresentation::kTagged, ValueRepresentation::kTagged,
9745 ValueRepresentation::kTagged, ValueRepresentation::kTagged,
9746 ValueRepresentation::kTagged};
9750 static constexpr
int kContextIndex = 0;
9751 static constexpr
int kObjectIndex = 1;
9752 static constexpr
int kKeyIndex = 2;
9753 static constexpr
int kValueIndex = 3;
9754 static constexpr
int kFlagsIndex = 4;
9831 case UseRepresentation::kTagged:
9832 return os <<
"Tagged";
9833 case UseRepresentation::kInt32:
9834 return os <<
"Int32";
9835 case UseRepresentation::kTruncatedInt32:
9836 return os <<
"TruncatedInt32";
9837 case UseRepresentation::kUint32:
9838 return os <<
"Uint32";
9839 case UseRepresentation::kFloat64:
9840 return os <<
"Float64";
9841 case UseRepresentation::kHoleyFloat64:
9842 return os <<
"HoleyFloat64";
9863 merge_state_(merge_state),
9873 return merge_state_;
9876 using Node::initialize_input_null;
9877 using Node::reduce_input_count;
9878 using Node::set_input;
9881 bool is_loop_phi()
const;
9889 #ifdef V8_COMPRESS_POINTERS
9890 void MarkTaggedInputsAsDecompressing() {
9911 return same_loop_uses_repr_hint_;
9921 DCHECK(is_unmerged_loop_phi());
9922 post_loop_type_ =
type;
9926 DCHECK(is_unmerged_loop_phi());
9928 type_ = post_loop_type_;
9950 set_bitfield(bitfield() | HasKeyFlag::encode(
true));
9955 bool has_key()
const {
return HasKeyFlag::decode(bitfield()); }
9959 void SetUseRequires31BitValue();
9961 return Requires31BitValueFlag::decode(bitfield());
9964 set_bitfield(bitfield() | Requires31BitValueFlag::encode(
true));
9968 bool is_unmerged_loop_phi()
const;
9971 Phi** next() {
return &next_; }
9973 using HasKeyFlag = NextBitField<bool, 1>;
9974 using Requires31BitValueFlag = HasKeyFlag::Next<bool, 1>;
9975 using LoopPhiAfterLoopFlag = Requires31BitValueFlag::Next<bool, 1>;
9982 Phi* next_ =
nullptr;
9983 MergePointInterpreterFrameState*
const merge_state_;
10013 static constexpr
int kFunctionIndex = 0;
10014 static constexpr
int kContextIndex = 1;
10015 static constexpr
int kFixedInputCount = 2;
10019 static_assert(kMaxInputs >= kFixedInputCount + Code::kMaxArguments);
10025 :
Base(bitfield), receiver_mode_(
mode), target_type_(target_type) {
10026 set_input(kFunctionIndex,
function);
10027 set_input(kContextIndex,
context);
10032 Input&
function() {
return input(kFunctionIndex); }
10033 const Input&
function()
const {
return input(kFunctionIndex); }
10039 set_input(
i + kFixedInputCount,
node);
10043 std::make_reverse_iterator(&arg(-1)),
10044 std::make_reverse_iterator(&arg(num_args() - 1)));
10048 #ifdef V8_COMPRESS_POINTERS
10049 void MarkTaggedInputsAsDecompressing();
10061 TargetType target_type_;
10069 static constexpr
int kFunctionIndex = 0;
10070 static constexpr
int kNewTargetIndex = 1;
10071 static constexpr
int kContextIndex = 2;
10072 static constexpr
int kFixedInputCount = 3;
10076 static_assert(kMaxInputs >= kFixedInputCount + Code::kMaxArguments);
10082 :
Base(bitfield), feedback_(feedback) {
10083 set_input(kFunctionIndex,
function);
10085 set_input(kContextIndex,
context);
10090 Input&
function() {
return input(kFunctionIndex); }
10091 const Input&
function()
const {
return input(kFunctionIndex); }
10099 set_input(
i + kFixedInputCount,
node);
10103 std::make_reverse_iterator(&arg(-1)),
10104 std::make_reverse_iterator(&arg(num_args() - 1)));
10110 #ifdef V8_COMPRESS_POINTERS
10111 void MarkTaggedInputsAsDecompressing();
10133 !Builtins::CallInterfaceDescriptorFor(
builtin).HasContextParameter());
10140 DCHECK(Builtins::CallInterfaceDescriptorFor(
builtin).HasContextParameter());
10151 return feedback_.value();
10159 feedback_ = feedback;
10160 slot_type_ = slot_type;
10166 Builtins::CallInterfaceDescriptorFor(
builtin()).HasContextParameter());
10171 auto descriptor = Builtins::CallInterfaceDescriptorFor(builtin_);
10172 bool has_context = descriptor.HasContextParameter();
10173 int extra_input_count = has_context ? 1 : 0;
10178 auto descriptor = Builtins::CallInterfaceDescriptorFor(builtin_);
10179 if (has_feedback()) {
10180 int slot_index = InputCountWithoutContext();
10181 int vector_index = slot_index + 1;
10187 if (vector_index < descriptor.GetRegisterParameterCount()) {
10188 return descriptor.GetRegisterParameterCount() - 2;
10189 }
else if (vector_index == descriptor.GetRegisterParameterCount()) {
10190 return descriptor.GetRegisterParameterCount() - 1;
10192 return descriptor.GetRegisterParameterCount();
10195 return descriptor.GetRegisterParameterCount();
10200 std::make_reverse_iterator(&input(InputsInRegisterCount() - 1)),
10201 std::make_reverse_iterator(&input(InputCountWithoutContext() - 1)));
10207 return Builtins::CallInterfaceDescriptorFor(builtin_).GetReturnCount();
10211 #ifdef V8_COMPRESS_POINTERS
10212 void MarkTaggedInputsAsDecompressing();
10220 template <
typename... Args>
10226 std::optional<compiler::FeedbackSource> feedback_;
10233 static constexpr
Builtin kCEntry_Builtin =
10234 Builtin::kCEntry_Return1_ArgvOnStack_BuiltinExit;
10237 static constexpr
int kTargetIndex = 0;
10238 static constexpr
int kNewTargetIndex = 1;
10239 static constexpr
int kContextIndex = 2;
10240 static constexpr
int kFixedInputCount = 3;
10245 DCHECK(Builtins::CallInterfaceDescriptorFor(
builtin).HasContextParameter());
10248 set_input(kTargetIndex,
target);
10250 set_input(kContextIndex,
context);
10268 set_input(
i + kFixedInputCount,
node);
10273 std::make_reverse_iterator(&arg(-1)),
10274 std::make_reverse_iterator(&arg(num_args() - 1)));
10278 #ifdef V8_COMPRESS_POINTERS
10279 void MarkTaggedInputsAsDecompressing();
10294 static constexpr
int kFunctionIndex = 0;
10295 static constexpr
int kContextIndex = 1;
10296 static constexpr
int kFixedInputCount = 2;
10300 static_assert(kMaxInputs >= kFixedInputCount + Code::kMaxArguments);
10306 :
Base(bitfield), start_index_(start_index), target_type_(target_type) {
10307 set_input(kFunctionIndex,
function);
10308 set_input(kContextIndex,
context);
10313 Input&
function() {
return input(kFunctionIndex); }
10314 const Input&
function()
const {
return input(kFunctionIndex); }
10320 set_input(
i + kFixedInputCount,
node);
10324 std::make_reverse_iterator(&arg(-1)),
10325 std::make_reverse_iterator(&arg(num_args() - 1)));
10329 #ifdef V8_COMPRESS_POINTERS
10330 void MarkTaggedInputsAsDecompressing();
10350 static constexpr
int kContextIndex = 0;
10351 static constexpr
int kFixedInputCount = 1;
10357 :
Base(bitfield), function_id_(function_id) {
10358 set_input(kContextIndex,
context);
10370 set_input(
i + kFixedInputCount,
node);
10374 std::make_reverse_iterator(&arg(-1)),
10375 std::make_reverse_iterator(&arg(num_args() - 1)));
10379 return Runtime::FunctionForId(function_id())->result_size;
10383 #ifdef V8_COMPRESS_POINTERS
10384 void MarkTaggedInputsAsDecompressing();
10400 static constexpr
int kFunctionIndex = 0;
10401 static constexpr
int kContextIndex = 1;
10402 static constexpr
int kFixedInputCount = 2;
10408 set_input(kFunctionIndex,
function);
10409 set_input(kContextIndex,
context);
10414 Input&
function() {
return input(kFunctionIndex); }
10415 const Input&
function()
const {
return input(kFunctionIndex); }
10421 return num_args() - 1;
10425 set_input(
i + kFixedInputCount,
node);
10429 std::make_reverse_iterator(&arg(-1)),
10430 std::make_reverse_iterator(&arg(num_args_no_spread() - 1)));
10439 #ifdef V8_COMPRESS_POINTERS
10440 void MarkTaggedInputsAsDecompressing();
10453 static constexpr
int kFunctionIndex = 0;
10454 static constexpr
int kReceiverIndex = 1;
10455 static constexpr
int kArgumentsListIndex = 2;
10456 static constexpr
int kContextIndex = 3;
10464 ValueRepresentation::kTagged, ValueRepresentation::kTagged,
10465 ValueRepresentation::kTagged, ValueRepresentation::kTagged};
10467 Input&
function() {
return input(kFunctionIndex); }
10473 #ifdef V8_COMPRESS_POINTERS
10474 void MarkTaggedInputsAsDecompressing();
10486 static constexpr
int kClosureIndex = 0;
10487 static constexpr
int kContextIndex = 1;
10488 static constexpr
int kReceiverIndex = 2;
10489 static constexpr
int kNewTargetIndex = 3;
10490 static constexpr
int kFixedInputCount = 4;
10494 static_assert(kMaxInputs >= kFixedInputCount + Code::kMaxArguments);
10500 :
Base(bitfield), expected_parameter_count_(expected_parameter_count) {
10501 set_input(kClosureIndex, closure);
10502 set_input(kContextIndex,
context);
10503 set_input(kReceiverIndex,
receiver);
10520 set_input(
i + kFixedInputCount,
node);
10524 std::make_reverse_iterator(&arg(-1)),
10525 std::make_reverse_iterator(&arg(num_args() - 1)));
10529 #ifdef V8_COMPRESS_POINTERS
10530 void MarkTaggedInputsAsDecompressing();
10538 int expected_parameter_count_;
10545 static constexpr
int kClosureIndex = 0;
10546 static constexpr
int kContextIndex = 1;
10547 static constexpr
int kReceiverIndex = 2;
10548 static constexpr
int kNewTargetIndex = 3;
10549 static constexpr
int kFixedInputCount = 4;
10553 static_assert(kMaxInputs >= kFixedInputCount + Code::kMaxArguments);
10559 #ifdef V8_ENABLE_LEAPTIERING
10578 set_input(
i + kFixedInputCount,
node);
10582 std::make_reverse_iterator(&arg(-1)),
10583 std::make_reverse_iterator(&arg(num_args() - 1)));
10587 return shared_function_info_;
10591 #ifdef V8_COMPRESS_POINTERS
10592 void MarkTaggedInputsAsDecompressing();
10602 #ifdef V8_ENABLE_LEAPTIERING
10608 int expected_parameter_count_;
10624 static constexpr
int kContextIndex = 0;
10625 static constexpr
int kReceiverIndex = 1;
10626 static constexpr
int kFixedInputCount = 2;
10630 static_assert(kMaxInputs >= kFixedInputCount + Code::kMaxArguments);
10637 :
Base(bitfield | ModeField::encode(
mode)),
10638 function_template_info_(function_template_info) {
10639 set_input(kContextIndex,
context);
10640 set_input(kReceiverIndex,
receiver);
10656 set_input(
i + kFixedInputCount,
node);
10660 std::make_reverse_iterator(&arg(-1)),
10661 std::make_reverse_iterator(&arg(num_args() - 1)));
10664 Mode mode()
const {
return ModeField::decode(bitfield()); }
10667 return function_template_info_;
10673 #ifdef V8_COMPRESS_POINTERS
10674 void MarkTaggedInputsAsDecompressing();
10682 using ModeField = NextBitField<Mode, 2>;
10688 const compiler::OptionalJSObjectRef api_holder_;
10696 static constexpr
int kFunctionIndex = 0;
10697 static constexpr
int kNewTargetIndex = 1;
10698 static constexpr
int kContextIndex = 2;
10699 static constexpr
int kFixedInputCount = 3;
10706 :
Base(bitfield), feedback_(feedback) {
10707 set_input(kFunctionIndex,
function);
10709 set_input(kContextIndex,
context);
10714 Input&
function() {
return input(kFunctionIndex); }
10715 const Input&
function()
const {
return input(kFunctionIndex); }
10723 return num_args() - 1;
10727 set_input(
i + kFixedInputCount,
node);
10735 std::make_reverse_iterator(&arg(-1)),
10736 std::make_reverse_iterator(&arg(num_args_no_spread() - 1)));
10741 #ifdef V8_COMPRESS_POINTERS
10742 void MarkTaggedInputsAsDecompressing();
10766 OpProperties::CanAllocate() |
10767 OpProperties::NotIdempotent();
10776 auto options()
const {
return std::tuple{native_context_, mode_}; }
10797 ValueRepresentation::kTagged, ValueRepresentation::kTagged};
10815 OpProperties::CanAllocate() |
10816 OpProperties::DeferredCall();
10835 :
Base(CheckTypeBitField::update(bitfield, check_type)) {}
10848 auto options()
const {
return std::tuple{check_type()}; }
10851 using CheckTypeBitField = NextBitField<CheckType, 1>;
10914 OpProperties::LazyDeopt() |
10915 OpProperties::NotIdempotent();
10929 :
Base(bitfield), amount_(amount) {
10937 OpProperties::DeferredCall() | OpProperties::CanAllocate() |
10938 OpProperties::LazyDeopt() | OpProperties::NotIdempotent();
10944 int MaxCallStackArgs()
const;
10945 void SetValueLocationConstraints();
10959 :
Base(bitfield), amount_(amount) {
10967 OpProperties::DeferredCall() | OpProperties::NotIdempotent();
10973 int MaxCallStackArgs()
const;
10974 void SetValueLocationConstraints();
11037 :
Base(bitfield) {}
11081 ValueRepresentation::kTagged, ValueRepresentation::kTagged};
11084 Input&
function() {
return Node::input(1); }
11101 transition_sources_(transition_sources),
11102 transition_target_(transition_target) {}
11106 OpProperties::AnySideEffects() | OpProperties::DeferredCall();
11108 ValueRepresentation::kTagged, ValueRepresentation::kTagged};
11119 return transition_sources_;
11122 return transition_target_;
11139 transition_sources_(transition_sources),
11140 transition_target_(transition_target) {}
11144 OpProperties::DeferredCall() |
11145 OpProperties::EagerDeopt();
11147 ValueRepresentation::kTagged, ValueRepresentation::kTagged};
11158 return transition_sources_;
11161 return transition_target_;
11175 :
Base(bitfield) {}
11182 OpProperties::CanRead() | OpProperties::TaggedValue();
11191 :
Base(bitfield) {}
11214 return next_post_dominating_hole_;
11220 next_post_dominating_hole_ =
node;
11224 using NodeBase::NodeBase;
11227 ControlNode* next_post_dominating_hole_ =
nullptr;
11247 int predecessor_id_ = 0;
11250 template <
class Derived>
11259 bitfield, target_refs) {}
11275 if_true_(if_true_refs),
11276 if_false_(if_false_refs) {}
11294 template <
size_t InputCount,
class Derived>
11305 template <
size_t InputCount,
class Derived>
11314 bitfield, if_true_refs, if_false_refs) {}
11322 :
Base(bitfield, target_refs) {}
11335 :
Base(bitfield, target_refs) {}
11338 OpProperties::DeoptCheckpoint() | Base::kProperties;
11353 :
Base(bitfield, ref) {}
11361 used_node_locations_ = locations;
11373 :
Base(bitfield), reason_(reason) {
11374 DCHECK_EQ(NodeBase::opcode(), opcode_of<Abort>);
11395 DCHECK_EQ(NodeBase::opcode(), opcode_of<Return>);
11403 void SetValueLocationConstraints();
11413 :
Base(bitfield | ReasonField::encode(reason)) {
11414 DCHECK_EQ(NodeBase::opcode(), opcode_of<Deopt>);
11433 value_base_(value_base),
11441 value_base_(value_base),
11444 fallthrough_(fallthrough) {}
11455 DCHECK(has_fallthrough());
11456 return fallthrough_.value().block_ptr();
11460 DCHECK(has_fallthrough());
11461 fallthrough_.value().set_block_ptr(fallthrough);
11471 const int value_base_;
11474 std::optional<BasicBlockRef> fallthrough_;
11483 :
Base(bitfield, if_true_refs, if_false_refs) {}
11490 #ifdef V8_COMPRESS_POINTERS
11491 void MarkTaggedInputsAsDecompressing() {
11509 :
Base(bitfield, if_true_refs, if_false_refs), root_index_(root_index) {}
11517 #ifdef V8_COMPRESS_POINTERS
11518 void MarkTaggedInputsAsDecompressing() {
11539 :
Base(bitfield, if_true_refs, if_false_refs) {}
11546 #ifdef V8_COMPRESS_POINTERS
11547 void MarkTaggedInputsAsDecompressing() {
11565 :
Base(CheckTypeBitField::update(bitfield, check_type), if_true_refs,
11579 using CheckTypeBitField = NextBitField<CheckType, 1>;
11588 :
Base(bitfield, if_true_refs, if_false_refs) {}
11608 :
Base(CheckTypeBitField::update(bitfield, check_type), if_true_refs,
11622 using CheckTypeBitField = NextBitField<CheckType, 1>;
11633 :
Base(bitfield, if_true_refs, if_false_refs) {}
11653 :
Base(bitfield, if_true_refs, if_false_refs) {}
11673 :
Base(bitfield, if_true_refs, if_false_refs) {}
11692 :
Base(bitfield, if_true_refs, if_false_refs) {}
11709 static constexpr
int kLeftIndex = 0;
11710 static constexpr
int kRightIndex = 1;
11717 :
Base(bitfield, if_true_refs, if_false_refs), operation_(operation) {}
11720 ValueRepresentation::kInt32, ValueRepresentation::kInt32};
11737 static constexpr
int kLeftIndex = 0;
11738 static constexpr
int kRightIndex = 1;
11745 :
Base(bitfield, if_true_refs, if_false_refs), operation_(operation) {}
11748 ValueRepresentation::kUint32, ValueRepresentation::kUint32};
11765 static constexpr
int kLeftIndex = 0;
11766 static constexpr
int kRightIndex = 1;
11773 :
Base(bitfield, if_true_refs, if_false_refs), operation_(operation) {}
11776 ValueRepresentation::kFloat64, ValueRepresentation::kFloat64};
11793 static constexpr
int kLeftIndex = 0;
11794 static constexpr
int kRightIndex = 1;
11801 :
Base(bitfield, if_true_refs, if_false_refs) {}
11804 ValueRepresentation::kTagged, ValueRepresentation::kTagged};
11806 #ifdef V8_COMPRESS_POINTERS
11807 void MarkTaggedInputsAsDecompressing() {
11821 static constexpr
int kValueIndex = 0;
11828 :
Base(bitfield, if_true_refs, if_false_refs), literal_(
literal) {}
11844 case Opcode::k##op: \
11845 return op::kProperties;
11851 template <
typename Function>
11852 inline void NodeBase::ForAllInputsInRegallocAssignmentOrder(
Function&& f) {
11854 for (
Input& input : *
this) {
11856 .extended_policy()) {
11857 case compiler::UnallocatedOperand::MUST_HAVE_REGISTER:
11858 if (category == InputAllocationPolicy::kArbitraryRegister)
11859 f(category, &input);
11862 case compiler::UnallocatedOperand::REGISTER_OR_SLOT_OR_CONSTANT:
11863 if (category == InputAllocationPolicy::kAny) f(category, &input);
11866 case compiler::UnallocatedOperand::FIXED_REGISTER:
11867 case compiler::UnallocatedOperand::FIXED_FP_REGISTER:
11868 if (category == InputAllocationPolicy::kFixedRegister)
11869 f(category, &input);
11872 case compiler::UnallocatedOperand::REGISTER_OR_SLOT:
11873 case compiler::UnallocatedOperand::SAME_AS_INPUT:
11875 case compiler::UnallocatedOperand::MUST_HAVE_SLOT:
11881 iterate_inputs(InputAllocationPolicy::kFixedRegister);
11882 iterate_inputs(InputAllocationPolicy::kArbitraryRegister);
11883 iterate_inputs(InputAllocationPolicy::kAny);
i::DirectHandle< i::String > name
Definition: api.cc:6947
std::unordered_map< const void *, std::weak_ptr< BackingStore > > map_
Definition: backing-store.cc:760
union v8::internal::@350::BuiltinMetadata::KindSpecificData data
Builtins::Kind kind
Definition: builtins.cc:40
#define SBXCHECK_LT(lhs, rhs)
Definition: check.h:59
#define SLOW_DCHECK(condition)
Definition: checks.h:21
Definition: v8-function.h:27
Definition: v8-primitive.h:887
Definition: v8-primitive.h:905
Definition: bit-field.h:25
static constexpr U kMax
Definition: bit-field.h:44
static constexpr int kLastUsedBit
Definition: bit-field.h:42
static constexpr T decode(U value)
Definition: bit-field.h:66
static constexpr bool is_valid(T value)
Definition: bit-field.h:50
static constexpr U encode(T value)
Definition: bit-field.h:55
static constexpr V8_NODISCARD U update(U previous, T value)
Definition: bit-field.h:61
static constexpr U kMask
Definition: bit-field.h:41
static constexpr int kShift
Definition: bit-field.h:39
constexpr const auto & get() const
Definition: discriminated-union.h:83
constexpr Tag tag() const
Definition: discriminated-union.h:79
Definition: enum-set.h:20
Definition: strong-alias.h:74
Definition: threaded-list.h:35
static BytecodeOffset GetContinuationBytecodeOffset(Builtin builtin)
Definition: builtins.cc:97
Definition: utils/utils.h:674
static constexpr BytecodeOffset None()
Definition: utils/utils.h:679
Definition: string.h:1014
Definition: handles.h:660
Definition: register-ppc.h:234
Definition: external-reference.h:536
Definition: utils/utils.h:645
Definition: field-index.h:22
Definition: boxed-float.h:78
bool is_nan() const
Definition: boxed-float.h:101
double get_scalar() const
Definition: boxed-float.h:95
Definition: handles.h:150
Definition: heap-number.h:28
Definition: local-isolate.h:45
constexpr static MachineRepresentation PointerRepresentation()
Definition: machine-type.h:169
static V8_EXPORT_PRIVATE bool BooleanValue(Tagged< Object > obj, IsolateT *isolate)
Conversion
Definition: objects.h:131
static constexpr int SizeFor(int length)
Definition: fixed-array.h:407
constexpr RegisterT first() const
Definition: reglist-base.h:111
constexpr void set(RegisterT reg)
Definition: reglist-base.h:47
constexpr bool has(RegisterT reg) const
Definition: reglist-base.h:57
constexpr void clear(RegisterT reg)
Definition: reglist-base.h:52
constexpr unsigned Count() const
Definition: reglist-base.h:66
constexpr int8_t code() const
Definition: register-base.h:43
Definition: register-arm.h:70
Definition: property-details.h:95
FunctionId
Definition: runtime.h:915
static constexpr Tagged< Smi > FromInt(int value)
Definition: smi.h:38
Definition: source-position.h:45
Definition: zone-compact-set.h:52
Definition: zone-containers.h:53
T * AllocateArray(size_t length)
Definition: zone.h:121
void * Allocate(size_t size)
Definition: zone.h:55
Definition: instruction.h:620
Definition: heap-refs.h:1048
Definition: heap-refs.h:1268
Definition: instruction.h:399
Definition: heap-refs.h:835
Definition: heap-refs.h:852
Definition: heap-refs.h:1036
Definition: heap-refs.h:988
Definition: heap-refs.h:530
IndirectHandle< HeapObject > object() const
Definition: instruction.h:48
bool IsRegister() const
Definition: instruction.h:655
bool IsDoubleRegister() const
Definition: instruction.h:670
bool IsAnyStackSlot() const
Definition: instruction.h:685
bool IsAnyRegister() const
Definition: instruction.h:649
Definition: heap-refs.h:1304
Definition: heap-refs.h:668
Definition: js-heap-broker.h:95
static LocationOperand * cast(InstructionOperand *op)
Definition: instruction.h:599
Register GetRegister() const
Definition: instruction.h:523
DoubleRegister GetDoubleRegister() const
Definition: instruction.h:533
@ REGISTER
Definition: instruction.h:499
Definition: heap-refs.h:897
Definition: heap-refs.h:813
Definition: heap-refs.h:796
Definition: heap-refs.h:1081
Definition: heap-refs.h:1116
Definition: heap-refs.h:1149
Definition: heap-refs.h:1183
Definition: instruction.h:188
Definition: compiler/turboshaft/types.h:509
Definition: snapshot-table.h:73
Definition: bytecode-register.h:27
constexpr bool is_valid() const
Definition: bytecode-register.h:33
LiteralFlag
Definition: bytecode-flags-and-tokens.h:67
Definition: maglev-ir.h:11368
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
int MaxCallStackArgs() const
Abort(uint64_t bitfield, AbortReason reason)
Definition: maglev-ir.h:11372
AbortReason reason() const
Definition: maglev-ir.h:11379
Definition: maglev-ir.h:8118
Input & object_input()
Definition: maglev-ir.h:8134
int offset() const
Definition: maglev-ir.h:8130
AbstractLoadTaggedField(uint64_t bitfield, const int offset)
Definition: maglev-ir.h:8123
void GenerateCode(MaglevAssembler *, const ProcessingState &)
auto options() const
Definition: maglev-ir.h:8140
void SetValueLocationConstraints()
Definition: maglev-ir.h:6571
int MaxCallStackArgs() const
Definition: maglev-ir.h:6588
void SetValueLocationConstraints()
AllocateElementsArray(uint64_t bitfield, AllocationType allocation_type)
Definition: maglev-ir.h:6575
void GenerateCode(MaglevAssembler *, const ProcessingState &)
AllocationType allocation_type() const
Definition: maglev-ir.h:6593
Input & length_input()
Definition: maglev-ir.h:6583
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:6591
Definition: maglev-ir.h:6460
int MaxCallStackArgs() const
Definition: maglev-ir.h:6471
void set_size(int size)
Definition: maglev-ir.h:6478
InlinedAllocation::List & allocation_list()
Definition: maglev-ir.h:6480
void set_elided_write_barriers_depend_on_type()
Definition: maglev-ir.h:6492
AllocationType allocation_type() const
Definition: maglev-ir.h:6476
int size() const
Definition: maglev-ir.h:6477
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void Add(InlinedAllocation *alloc)
Definition: maglev-ir.h:6482
AllocationBlock(uint64_t bitfield, AllocationType allocation_type)
Definition: maglev-ir.h:6464
bool elided_write_barriers_depend_on_type() const
Definition: maglev-ir.h:6489
void SetValueLocationConstraints()
Definition: maglev-ir.h:6536
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:6558
void GenerateCode(MaglevAssembler *, const ProcessingState &)
int MaxCallStackArgs() const
Definition: maglev-ir.h:6555
ArgumentsElements(uint64_t bitfield, CreateArgumentsType type, int formal_parameter_count)
Definition: maglev-ir.h:6540
CreateArgumentsType type() const
Definition: maglev-ir.h:6560
void SetValueLocationConstraints()
int formal_parameter_count() const
Definition: maglev-ir.h:6561
Input & arguments_count_input()
Definition: maglev-ir.h:6553
Definition: maglev-ir.h:6504
ArgumentsLength(uint64_t bitfield)
Definition: maglev-ir.h:6508
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:6514
Definition: maglev-ir.h:6774
Input & right_input()
Definition: maglev-ir.h:6786
Input & left_input()
Definition: maglev-ir.h:6785
AssertCondition condition() const
Definition: maglev-ir.h:6794
AbortReason reason() const
Definition: maglev-ir.h:6795
AssertInt32(uint64_t bitfield, AssertCondition condition, AbortReason reason)
Definition: maglev-ir.h:6778
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
auto options() const
Definition: maglev-ir.h:6792
Definition: maglev-ir.h:1102
void Bind(BasicBlock *block)
Definition: maglev-ir.h:1167
void set_block_ptr(BasicBlock *block)
Definition: maglev-ir.h:1182
BasicBlockRef(const BasicBlockRef &)=delete
BasicBlockRef & operator=(BasicBlockRef &&)=delete
BasicBlockRef * next_ref_
Definition: maglev-ir.h:1200
BasicBlockRef * next_ref() const
Definition: maglev-ir.h:1187
BasicBlockRef * Reset()
Definition: maglev-ir.h:1147
BasicBlockRef(BasicBlockRef &&)=delete
BasicBlockRef(BasicBlock *block)
Definition: maglev-ir.h:1111
BasicBlockRef * SetToBlockAndReturnNext(BasicBlock *block)
Definition: maglev-ir.h:1134
BasicBlockRef * MoveToRefList(BasicBlockRef *ref_list_head)
Definition: maglev-ir.h:1157
BasicBlockRef(BasicBlockRef *ref_list_head)
Definition: maglev-ir.h:1126
bool has_ref() const
Definition: maglev-ir.h:1192
BasicBlockRef()
Definition: maglev-ir.h:1106
BasicBlock * block_ptr() const
Definition: maglev-ir.h:1177
BasicBlockRef & operator=(const BasicBlockRef &)=delete
BasicBlock * block_ptr_
Definition: maglev-ir.h:1199
Definition: maglev-basic-block.h:25
Definition: maglev-ir.h:3097
static constexpr int kLeftIndex
Definition: maglev-ir.h:3106
Input & left_input()
Definition: maglev-ir.h:3108
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3103
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3102
BinaryWithFeedbackNode(uint64_t bitfield, const compiler::FeedbackSource &feedback)
Definition: maglev-ir.h:3113
compiler::FeedbackSource feedback() const
Definition: maglev-ir.h:3110
Input & right_input()
Definition: maglev-ir.h:3109
void SetValueLocationConstraints()
static constexpr int kRightIndex
Definition: maglev-ir.h:3107
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3119
const compiler::FeedbackSource feedback_
Definition: maglev-ir.h:3121
Definition: maglev-ir.h:11307
BranchControlNodeT(uint64_t bitfield, BasicBlockRef *if_true_refs, BasicBlockRef *if_false_refs)
Definition: maglev-ir.h:11311
Definition: maglev-ir.h:11270
void set_if_true(BasicBlock *block)
Definition: maglev-ir.h:11281
BasicBlock * if_true() const
Definition: maglev-ir.h:11278
BasicBlock * if_false() const
Definition: maglev-ir.h:11279
void set_if_false(BasicBlock *block)
Definition: maglev-ir.h:11282
BranchControlNode(uint64_t bitfield, BasicBlockRef *if_true_refs, BasicBlockRef *if_false_refs)
Definition: maglev-ir.h:11272
Definition: maglev-ir.h:11761
Input & left_input()
Definition: maglev-ir.h:11767
void GenerateCode(MaglevAssembler *, const ProcessingState &)
BranchIfFloat64Compare(uint64_t bitfield, Operation operation, BasicBlockRef *if_true_refs, BasicBlockRef *if_false_refs)
Definition: maglev-ir.h:11770
Input & right_input()
Definition: maglev-ir.h:11768
Operation operation() const
Definition: maglev-ir.h:11782
void SetValueLocationConstraints()
Definition: maglev-ir.h:11686
Input & condition_input()
Definition: maglev-ir.h:11697
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:11701
BranchIfFloat64IsHole(uint64_t bitfield, BasicBlockRef *if_true_refs, BasicBlockRef *if_false_refs)
Definition: maglev-ir.h:11690
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:11666
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:11682
Input & condition_input()
Definition: maglev-ir.h:11678
BranchIfFloat64ToBooleanTrue(uint64_t bitfield, BasicBlockRef *if_true_refs, BasicBlockRef *if_false_refs)
Definition: maglev-ir.h:11670
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
Definition: maglev-ir.h:11705
void SetValueLocationConstraints()
Input & right_input()
Definition: maglev-ir.h:11712
BranchIfInt32Compare(uint64_t bitfield, Operation operation, BasicBlockRef *if_true_refs, BasicBlockRef *if_false_refs)
Definition: maglev-ir.h:11714
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Operation operation() const
Definition: maglev-ir.h:11726
Input & left_input()
Definition: maglev-ir.h:11711
Definition: maglev-ir.h:11626
BranchIfInt32ToBooleanTrue(uint64_t bitfield, BasicBlockRef *if_true_refs, BasicBlockRef *if_false_refs)
Definition: maglev-ir.h:11630
Input & condition_input()
Definition: maglev-ir.h:11638
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:11642
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:11646
void SetValueLocationConstraints()
Input & condition_input()
Definition: maglev-ir.h:11658
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:11662
void GenerateCode(MaglevAssembler *, const ProcessingState &)
BranchIfIntPtrToBooleanTrue(uint64_t bitfield, BasicBlockRef *if_true_refs, BasicBlockRef *if_false_refs)
Definition: maglev-ir.h:11650
Definition: maglev-ir.h:11582
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:11597
Input & condition_input()
Definition: maglev-ir.h:11593
void GenerateCode(MaglevAssembler *, const ProcessingState &)
BranchIfJSReceiver(uint64_t bitfield, BasicBlockRef *if_true_refs, BasicBlockRef *if_false_refs)
Definition: maglev-ir.h:11586
Definition: maglev-ir.h:11789
Input & left_input()
Definition: maglev-ir.h:11795
BranchIfReferenceEqual(uint64_t bitfield, BasicBlockRef *if_true_refs, BasicBlockRef *if_false_refs)
Definition: maglev-ir.h:11798
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & right_input()
Definition: maglev-ir.h:11796
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:11814
void SetValueLocationConstraints()
Definition: maglev-ir.h:11502
RootIndex root_index()
Definition: maglev-ir.h:11514
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & condition_input()
Definition: maglev-ir.h:11515
void SetValueLocationConstraints()
BranchIfRootConstant(uint64_t bitfield, RootIndex root_index, BasicBlockRef *if_true_refs, BasicBlockRef *if_false_refs)
Definition: maglev-ir.h:11506
Definition: maglev-ir.h:11477
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:11498
void GenerateCode(MaglevAssembler *, const ProcessingState &)
BranchIfSmi(uint64_t bitfield, BasicBlockRef *if_true_refs, BasicBlockRef *if_false_refs)
Definition: maglev-ir.h:11481
void SetValueLocationConstraints()
Input & condition_input()
Definition: maglev-ir.h:11488
Definition: maglev-ir.h:11601
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:11619
void SetValueLocationConstraints()
CheckType check_type() const
Definition: maglev-ir.h:11615
BranchIfToBooleanTrue(uint64_t bitfield, CheckType check_type, BasicBlockRef *if_true_refs, BasicBlockRef *if_false_refs)
Definition: maglev-ir.h:11605
Input & condition_input()
Definition: maglev-ir.h:11614
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:11817
Input & value_input()
Definition: maglev-ir.h:11822
BranchIfTypeOf(uint64_t bitfield, interpreter::TestTypeOfFlags::LiteralFlag literal, BasicBlockRef *if_true_refs, BasicBlockRef *if_false_refs)
Definition: maglev-ir.h:11824
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
Definition: maglev-ir.h:11733
Operation operation() const
Definition: maglev-ir.h:11754
Input & right_input()
Definition: maglev-ir.h:11740
Input & left_input()
Definition: maglev-ir.h:11739
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
BranchIfUint32Compare(uint64_t bitfield, Operation operation, BasicBlockRef *if_true_refs, BasicBlockRef *if_false_refs)
Definition: maglev-ir.h:11742
Definition: maglev-ir.h:11532
BranchIfUndefinedOrNull(uint64_t bitfield, BasicBlockRef *if_true_refs, BasicBlockRef *if_false_refs)
Definition: maglev-ir.h:11536
Input & condition_input()
Definition: maglev-ir.h:11544
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:11554
void SetValueLocationConstraints()
Definition: maglev-ir.h:11558
void SetValueLocationConstraints()
CheckType check_type() const
Definition: maglev-ir.h:11572
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:11576
Input & condition_input()
Definition: maglev-ir.h:11571
BranchIfUndetectable(uint64_t bitfield, CheckType check_type, BasicBlockRef *if_true_refs, BasicBlockRef *if_false_refs)
Definition: maglev-ir.h:11562
Definition: maglev-ir.h:1714
base::Vector< ValueNode * > parameters() const
Definition: maglev-ir.h:1726
ValueNode * context() const
Definition: maglev-ir.h:1728
BuiltinContinuationDeoptFrame(Builtin builtin_id, base::Vector< ValueNode * > parameters, ValueNode *context, compiler::OptionalJSFunctionRef maybe_js_target, DeoptFrame *parent)
Definition: maglev-ir.h:1716
ValueNode *& context()
Definition: maglev-ir.h:1727
bool is_javascript() const
Definition: maglev-ir.h:1729
compiler::JSFunctionRef javascript_target() const
Definition: maglev-ir.h:1730
const Builtin & builtin_id() const
Definition: maglev-ir.h:1725
Definition: maglev-ir.h:7781
void SetValueLocationConstraints()
BuiltinSeqOneByteStringCharCodeAt(uint64_t bitfield)
Definition: maglev-ir.h:7785
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & string_input()
Definition: maglev-ir.h:7795
Input & index_input()
Definition: maglev-ir.h:7796
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7800
Definition: maglev-ir.h:7721
Input & code_input()
Definition: maglev-ir.h:7732
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7737
BuiltinStringFromCharCode(uint64_t bitfield)
Definition: maglev-ir.h:7725
Definition: maglev-ir.h:7742
BuiltinStringPrototypeCharCodeOrCodePointAt(uint64_t bitfield, Mode mode)
Definition: maglev-ir.h:7752
auto options() const
Definition: maglev-ir.h:7772
int MaxCallStackArgs() const
Input & index_input()
Definition: maglev-ir.h:7765
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
Mode
Definition: maglev-ir.h:7747
@ kCodePointAt
Definition: maglev-ir.h:7749
@ kCharCodeAt
Definition: maglev-ir.h:7748
Mode mode() const
Definition: maglev-ir.h:7774
Input & string_input()
Definition: maglev-ir.h:7764
Definition: maglev-ir.h:10122
compiler::FeedbackSource feedback() const
Definition: maglev-ir.h:10149
CallBuiltin(uint64_t bitfield, Builtin builtin, ValueNode *context)
Definition: maglev-ir.h:10138
int ReturnCount() const
Definition: maglev-ir.h:10206
void SetValueLocationConstraints()
int InputCountWithoutContext() const
Definition: maglev-ir.h:10170
int MaxCallStackArgs() const
FeedbackSlotType slot_type() const
Definition: maglev-ir.h:10153
void set_arg(int i, ValueNode *node)
Definition: maglev-ir.h:10204
void set_feedback(compiler::FeedbackSource const &feedback, FeedbackSlotType slot_type)
Definition: maglev-ir.h:10157
CallBuiltin(uint64_t bitfield, Builtin builtin)
Definition: maglev-ir.h:10130
FeedbackSlotType
Definition: maglev-ir.h:10126
Builtin builtin() const
Definition: maglev-ir.h:10163
Input & context_input()
Definition: maglev-ir.h:10164
bool has_feedback() const
Definition: maglev-ir.h:10148
void GenerateCode(MaglevAssembler *, const ProcessingState &)
auto stack_args()
Definition: maglev-ir.h:10198
int InputsInRegisterCount() const
Definition: maglev-ir.h:10177
Definition: maglev-ir.h:10230
int MaxCallStackArgs() const
auto args()
Definition: maglev-ir.h:10271
Input & arg(int i)
Definition: maglev-ir.h:10266
Input & target()
Definition: maglev-ir.h:10258
Input & context()
Definition: maglev-ir.h:10262
Builtin builtin() const
Definition: maglev-ir.h:10256
const Input & context() const
Definition: maglev-ir.h:10263
const Input & new_target() const
Definition: maglev-ir.h:10261
void set_arg(int i, ValueNode *node)
Definition: maglev-ir.h:10267
CallCPPBuiltin(uint64_t bitfield, Builtin builtin, ValueNode *target, ValueNode *new_target, ValueNode *context)
Definition: maglev-ir.h:10242
const Input & target() const
Definition: maglev-ir.h:10259
Input & new_target()
Definition: maglev-ir.h:10260
void GenerateCode(MaglevAssembler *, const ProcessingState &)
int num_args() const
Definition: maglev-ir.h:10265
void SetValueLocationConstraints()
Definition: maglev-ir.h:10290
Input & context()
Definition: maglev-ir.h:10315
int start_index() const
Definition: maglev-ir.h:10337
int num_args() const
Definition: maglev-ir.h:10317
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
void set_arg(int i, ValueNode *node)
Definition: maglev-ir.h:10319
Call::TargetType target_type() const
Definition: maglev-ir.h:10338
const Input & context() const
Definition: maglev-ir.h:10316
int MaxCallStackArgs() const
Input & arg(int i)
Definition: maglev-ir.h:10318
auto args()
Definition: maglev-ir.h:10322
CallForwardVarargs(uint64_t bitfield, ValueNode *function, ValueNode *context, int start_index, Call::TargetType target_type)
Definition: maglev-ir.h:10304
Definition: maglev-ir.h:10611
void set_arg(int i, ValueNode *node)
Definition: maglev-ir.h:10655
const Input & context() const
Definition: maglev-ir.h:10650
Input & receiver()
Definition: maglev-ir.h:10651
Input & context()
Definition: maglev-ir.h:10649
Input & arg(int i)
Definition: maglev-ir.h:10654
compiler::FunctionTemplateInfoRef function_template_info() const
Definition: maglev-ir.h:10666
Mode mode() const
Definition: maglev-ir.h:10664
const Input & receiver() const
Definition: maglev-ir.h:10652
auto args()
Definition: maglev-ir.h:10658
void SetValueLocationConstraints()
Mode
Definition: maglev-ir.h:10615
@ kGeneric
Definition: maglev-ir.h:10621
@ kNoProfilingInlined
Definition: maglev-ir.h:10619
@ kNoProfiling
Definition: maglev-ir.h:10617
bool inline_builtin() const
Definition: maglev-ir.h:10670
int MaxCallStackArgs() const
int num_args() const
Definition: maglev-ir.h:10653
CallKnownApiFunction(uint64_t bitfield, Mode mode, compiler::FunctionTemplateInfoRef function_template_info, ValueNode *context, ValueNode *receiver)
Definition: maglev-ir.h:10634
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:10541
compiler::SharedFunctionInfoRef shared_function_info() const
Definition: maglev-ir.h:10586
void set_arg(int i, ValueNode *node)
Definition: maglev-ir.h:10577
Input & closure()
Definition: maglev-ir.h:10567
const Input & closure() const
Definition: maglev-ir.h:10568
Input & receiver()
Definition: maglev-ir.h:10571
Input & context()
Definition: maglev-ir.h:10569
auto args()
Definition: maglev-ir.h:10580
int expected_parameter_count() const
Definition: maglev-ir.h:10599
Input & arg(int i)
Definition: maglev-ir.h:10576
const Input & context() const
Definition: maglev-ir.h:10570
int MaxCallStackArgs() const
int num_args() const
Definition: maglev-ir.h:10575
Input & new_target()
Definition: maglev-ir.h:10573
void SetValueLocationConstraints()
const Input & receiver() const
Definition: maglev-ir.h:10572
const Input & new_target() const
Definition: maglev-ir.h:10574
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:10345
Input & context()
Definition: maglev-ir.h:10365
Runtime::FunctionId function_id() const
Definition: maglev-ir.h:10363
const Input & context() const
Definition: maglev-ir.h:10366
int MaxCallStackArgs() const
void GenerateCode(MaglevAssembler *, const ProcessingState &)
CallRuntime(uint64_t bitfield, Runtime::FunctionId function_id, ValueNode *context)
Definition: maglev-ir.h:10355
Input & arg(int i)
Definition: maglev-ir.h:10368
void set_arg(int i, ValueNode *node)
Definition: maglev-ir.h:10369
auto args()
Definition: maglev-ir.h:10372
int num_args() const
Definition: maglev-ir.h:10367
void SetValueLocationConstraints()
int ReturnCount() const
Definition: maglev-ir.h:10378
Definition: maglev-ir.h:10482
Input & closure()
Definition: maglev-ir.h:10509
int num_args() const
Definition: maglev-ir.h:10517
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
const Input & new_target() const
Definition: maglev-ir.h:10516
auto args()
Definition: maglev-ir.h:10522
void set_arg(int i, ValueNode *node)
Definition: maglev-ir.h:10519
Input & arg(int i)
Definition: maglev-ir.h:10518
const Input & receiver() const
Definition: maglev-ir.h:10514
const Input & context() const
Definition: maglev-ir.h:10512
Input & receiver()
Definition: maglev-ir.h:10513
Input & new_target()
Definition: maglev-ir.h:10515
int MaxCallStackArgs() const
const Input & closure() const
Definition: maglev-ir.h:10510
CallSelf(uint64_t bitfield, int expected_parameter_count, ValueNode *closure, ValueNode *context, ValueNode *receiver, ValueNode *new_target)
Definition: maglev-ir.h:10498
Input & context()
Definition: maglev-ir.h:10511
Definition: maglev-ir.h:10448
int MaxCallStackArgs() const
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & receiver()
Definition: maglev-ir.h:10468
Input & context()
Definition: maglev-ir.h:10470
void SetValueLocationConstraints()
CallWithArrayLike(uint64_t bitfield)
Definition: maglev-ir.h:10460
Input & arguments_list()
Definition: maglev-ir.h:10469
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:10479
Definition: maglev-ir.h:10395
void set_arg(int i, ValueNode *node)
Definition: maglev-ir.h:10424
const Input & context() const
Definition: maglev-ir.h:10417
auto args_no_spread()
Definition: maglev-ir.h:10427
Input & receiver()
Definition: maglev-ir.h:10436
int MaxCallStackArgs() const
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & context()
Definition: maglev-ir.h:10416
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:10445
Input & arg(int i)
Definition: maglev-ir.h:10423
CallWithSpread(uint64_t bitfield, ValueNode *function, ValueNode *context)
Definition: maglev-ir.h:10406
Input & spread()
Definition: maglev-ir.h:10432
int num_args() const
Definition: maglev-ir.h:10418
int num_args_no_spread() const
Definition: maglev-ir.h:10419
Definition: maglev-ir.h:10007
const Input & context() const
Definition: maglev-ir.h:10035
ConvertReceiverMode receiver_mode() const
Definition: maglev-ir.h:10056
TargetType
Definition: maglev-ir.h:10011
void set_arg(int i, ValueNode *node)
Definition: maglev-ir.h:10038
void SetValueLocationConstraints()
int MaxCallStackArgs() const
auto args()
Definition: maglev-ir.h:10041
Input & context()
Definition: maglev-ir.h:10034
Call(uint64_t bitfield, ConvertReceiverMode mode, TargetType target_type, ValueNode *function, ValueNode *context)
Definition: maglev-ir.h:10023
void GenerateCode(MaglevAssembler *, const ProcessingState &)
TargetType target_type() const
Definition: maglev-ir.h:10057
Input & arg(int i)
Definition: maglev-ir.h:10037
int num_args() const
Definition: maglev-ir.h:10036
Definition: maglev-ir.h:4324
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4330
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4333
Input & input()
Definition: maglev-ir.h:4335
ChangeInt32ToFloat64(uint64_t bitfield)
Definition: maglev-ir.h:4328
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4339
Definition: maglev-ir.h:4362
ChangeIntPtrToFloat64(uint64_t bitfield)
Definition: maglev-ir.h:4366
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4377
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4371
Input & input()
Definition: maglev-ir.h:4373
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4368
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:4343
ChangeUint32ToFloat64(uint64_t bitfield)
Definition: maglev-ir.h:4347
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4349
Input & input()
Definition: maglev-ir.h:4354
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4358
void SetValueLocationConstraints()
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4352
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:7399
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & indices_input()
Definition: maglev-ir.h:7410
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7416
CheckCacheIndicesNotCleared(uint64_t bitfield)
Definition: maglev-ir.h:7403
void SetValueLocationConstraints()
Input & length_input()
Definition: maglev-ir.h:7412
Definition: maglev-ir.h:10787
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:10802
void GenerateCode(MaglevAssembler *, const ProcessingState &)
CheckConstructResult(uint64_t bitfield)
Definition: maglev-ir.h:10791
Input & construct_result_input()
Definition: maglev-ir.h:10793
int MaxCallStackArgs() const
void SetValueLocationConstraints()
Input & implicit_receiver_input()
Definition: maglev-ir.h:10794
Definition: maglev-ir.h:10806
int MaxCallStackArgs() const
void SetValueLocationConstraints()
bool for_derived_constructor()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:10825
Input & construct_result_input()
Definition: maglev-ir.h:10812
CheckDerivedConstructResult(uint64_t bitfield)
Definition: maglev-ir.h:10810
Definition: maglev-ir.h:7310
auto options() const
Definition: maglev-ir.h:7329
void GenerateCode(MaglevAssembler *, const ProcessingState &)
CheckDetectableCallable(uint64_t bitfield, CheckType check_type)
Definition: maglev-ir.h:7314
void SetValueLocationConstraints()
void PrintParams(std::ostream &out, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7327
Input & receiver_input()
Definition: maglev-ir.h:7322
CheckType check_type() const
Definition: maglev-ir.h:7323
Definition: maglev-ir.h:7038
CheckDynamicValue(uint64_t bitfield, DeoptimizeReason reason)
Definition: maglev-ir.h:7042
Input & first_input()
Definition: maglev-ir.h:7051
Input & second_input()
Definition: maglev-ir.h:7052
auto options() const
Definition: maglev-ir.h:7064
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
Definition: maglev-ir.h:6974
Input & target_input()
Definition: maglev-ir.h:6989
auto options() const
Definition: maglev-ir.h:6995
CheckFloat64SameValue(uint64_t bitfield, Float64 value, DeoptimizeReason reason)
Definition: maglev-ir.h:6978
Float64 value() const
Definition: maglev-ir.h:6986
Definition: maglev-ir.h:7120
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
CheckHeapObject(uint64_t bitfield)
Definition: maglev-ir.h:7124
Input & receiver_input()
Definition: maglev-ir.h:7131
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7141
Definition: maglev-ir.h:3648
Input & input()
Definition: maglev-ir.h:3658
CheckHoleyFloat64IsSmi(uint64_t bitfield)
Definition: maglev-ir.h:3652
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3654
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3662
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3656
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
Definition: maglev-ir.h:10872
void SetValueLocationConstraints()
Input & float64_input()
Definition: maglev-ir.h:10882
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:10886
void GenerateCode(MaglevAssembler *, const ProcessingState &)
CheckHoleyFloat64NotHole(uint64_t bitfield)
Definition: maglev-ir.h:10876
Definition: maglev-ir.h:7169
InstanceType first_instance_type() const
Definition: maglev-ir.h:7199
CheckInstanceType(uint64_t bitfield, CheckType check_type, const InstanceType first_instance_type, const InstanceType last_instance_type)
Definition: maglev-ir.h:7173
Input & receiver_input()
Definition: maglev-ir.h:7187
InstanceType last_instance_type() const
Definition: maglev-ir.h:7200
auto options() const
Definition: maglev-ir.h:7195
CheckType check_type() const
Definition: maglev-ir.h:7189
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:7514
auto options() const
Definition: maglev-ir.h:7540
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
CheckInt32Condition(uint64_t bitfield, AssertCondition condition, DeoptimizeReason reason)
Definition: maglev-ir.h:7518
AssertCondition condition() const
Definition: maglev-ir.h:7532
Input & left_input()
Definition: maglev-ir.h:7529
Input & right_input()
Definition: maglev-ir.h:7530
Definition: maglev-ir.h:3596
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & input()
Definition: maglev-ir.h:3606
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3602
CheckInt32IsSmi(uint64_t bitfield)
Definition: maglev-ir.h:3600
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3604
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3610
Definition: maglev-ir.h:3630
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3638
void GenerateCode(MaglevAssembler *, const ProcessingState &)
CheckIntPtrIsSmi(uint64_t bitfield)
Definition: maglev-ir.h:3634
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3644
void SetValueLocationConstraints()
Input & input()
Definition: maglev-ir.h:3640
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3636
Definition: maglev-ir.h:7419
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7439
CheckJSDataViewBounds(uint64_t bitfield, ExternalArrayType element_type)
Definition: maglev-ir.h:7423
Input & index_input()
Definition: maglev-ir.h:7434
ExternalArrayType element_type() const
Definition: maglev-ir.h:7443
Input & receiver_input()
Definition: maglev-ir.h:7433
auto options() const
Definition: maglev-ir.h:7441
Definition: maglev-ir.h:10829
CheckType check_type() const
Definition: maglev-ir.h:10842
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:10846
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & object_input()
Definition: maglev-ir.h:10841
auto options() const
Definition: maglev-ir.h:10848
void SetValueLocationConstraints()
CheckJSReceiverOrNullOrUndefined(uint64_t bitfield, CheckType check_type)
Definition: maglev-ir.h:10833
Definition: maglev-ir.h:6879
Input & map_input()
Definition: maglev-ir.h:6898
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & object_input()
Definition: maglev-ir.h:6897
CheckMapsWithAlreadyLoadedMap(uint64_t bitfield, base::Vector< const compiler::MapRef > maps, Zone *zone)
Definition: maglev-ir.h:6886
void SetValueLocationConstraints()
const compiler::ZoneRefSet< Map > & maps() const
Definition: maglev-ir.h:6895
auto options() const
Definition: maglev-ir.h:6904
CheckMapsWithAlreadyLoadedMap(uint64_t bitfield, const compiler::ZoneRefSet< Map > &maps)
Definition: maglev-ir.h:6883
Definition: maglev-ir.h:6838
void GenerateCode(MaglevAssembler *, const ProcessingState &)
CheckMapsWithMigrationAndDeopt(uint64_t bitfield, base::Vector< const compiler::MapRef > maps, CheckType check_type, Zone *zone)
Definition: maglev-ir.h:6846
const compiler::ZoneRefSet< Map > & maps() const
Definition: maglev-ir.h:6860
auto options() const
Definition: maglev-ir.h:6871
CheckMapsWithMigrationAndDeopt(uint64_t bitfield, const compiler::ZoneRefSet< Map > &maps, CheckType check_type)
Definition: maglev-ir.h:6842
void SetValueLocationConstraints()
CheckType check_type() const
Definition: maglev-ir.h:6861
Input & receiver_input()
Definition: maglev-ir.h:6864
int MaxCallStackArgs() const
Definition: maglev-ir.h:7336
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
CheckMapsWithMigration(uint64_t bitfield, const compiler::ZoneRefSet< Map > &maps, CheckType check_type)
Definition: maglev-ir.h:7340
Input & receiver_input()
Definition: maglev-ir.h:7355
CheckType check_type() const
Definition: maglev-ir.h:7356
const compiler::ZoneRefSet< Map > & maps() const
Definition: maglev-ir.h:7352
int MaxCallStackArgs() const
Definition: maglev-ir.h:6802
void SetValueLocationConstraints()
Input & receiver_input()
Definition: maglev-ir.h:6824
CheckMaps(uint64_t bitfield, base::Vector< const compiler::MapRef > maps, CheckType check_type, Zone *zone)
Definition: maglev-ir.h:6809
auto options() const
Definition: maglev-ir.h:6830
void GenerateCode(MaglevAssembler *, const ProcessingState &)
CheckType check_type() const
Definition: maglev-ir.h:6821
const compiler::ZoneRefSet< Map > & maps() const
Definition: maglev-ir.h:6820
CheckMaps(uint64_t bitfield, const compiler::ZoneRefSet< Map > &maps, CheckType check_type)
Definition: maglev-ir.h:6806
Definition: maglev-ir.h:10854
void SetValueLocationConstraints()
Input & object_input()
Definition: maglev-ir.h:10864
void GenerateCode(MaglevAssembler *, const ProcessingState &)
CheckNotHole(uint64_t bitfield)
Definition: maglev-ir.h:10858
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:10868
Definition: maglev-ir.h:7095
void SetValueLocationConstraints()
Object::Conversion mode() const
Definition: maglev-ir.h:7108
void GenerateCode(MaglevAssembler *, const ProcessingState &)
CheckNumber(uint64_t bitfield, Object::Conversion mode)
Definition: maglev-ir.h:7099
Input & receiver_input()
Definition: maglev-ir.h:7107
auto options() const
Definition: maglev-ir.h:7114
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7112
Definition: maglev-ir.h:7233
auto options() const
Definition: maglev-ir.h:7252
Input & receiver_input()
Definition: maglev-ir.h:7245
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
CheckType check_type() const
Definition: maglev-ir.h:7246
CheckSeqOneByteString(uint64_t bitfield, CheckType check_type)
Definition: maglev-ir.h:7237
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7250
Definition: maglev-ir.h:7069
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7092
CheckSmi(uint64_t bitfield)
Definition: maglev-ir.h:7073
Input & receiver_input()
Definition: maglev-ir.h:7080
void SetValueLocationConstraints()
Definition: maglev-ir.h:7284
auto options() const
Definition: maglev-ir.h:7303
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & receiver_input()
Definition: maglev-ir.h:7296
CheckType check_type() const
Definition: maglev-ir.h:7297
void SetValueLocationConstraints()
CheckStringOrOddball(uint64_t bitfield, CheckType check_type)
Definition: maglev-ir.h:7288
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7301
Definition: maglev-ir.h:7259
CheckType check_type() const
Definition: maglev-ir.h:7272
auto options() const
Definition: maglev-ir.h:7278
Input & receiver_input()
Definition: maglev-ir.h:7271
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7276
void GenerateCode(MaglevAssembler *, const ProcessingState &)
CheckStringOrStringWrapper(uint64_t bitfield, CheckType check_type)
Definition: maglev-ir.h:7263
Definition: maglev-ir.h:7208
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7225
void GenerateCode(MaglevAssembler *, const ProcessingState &)
auto options() const
Definition: maglev-ir.h:7227
CheckType check_type() const
Definition: maglev-ir.h:7221
void SetValueLocationConstraints()
CheckString(uint64_t bitfield, CheckType check_type)
Definition: maglev-ir.h:7212
Input & receiver_input()
Definition: maglev-ir.h:7220
Definition: maglev-ir.h:7144
auto options() const
Definition: maglev-ir.h:7163
CheckSymbol(uint64_t bitfield, CheckType check_type)
Definition: maglev-ir.h:7148
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7161
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & receiver_input()
Definition: maglev-ir.h:7156
CheckType check_type() const
Definition: maglev-ir.h:7157
Definition: maglev-ir.h:7495
CheckTypedArrayBounds(uint64_t bitfield)
Definition: maglev-ir.h:7499
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7511
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & length_input()
Definition: maglev-ir.h:7507
Input & index_input()
Definition: maglev-ir.h:7506
void SetValueLocationConstraints()
Definition: maglev-ir.h:7477
CheckTypedArrayNotDetached(uint64_t bitfield)
Definition: maglev-ir.h:7481
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7492
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & object_input()
Definition: maglev-ir.h:7488
Definition: maglev-ir.h:3613
void SetValueLocationConstraints()
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3621
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3627
Input & input()
Definition: maglev-ir.h:3623
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3619
void GenerateCode(MaglevAssembler *, const ProcessingState &)
CheckUint32IsSmi(uint64_t bitfield)
Definition: maglev-ir.h:3617
Definition: maglev-ir.h:6945
CheckValueEqualsInt32(uint64_t bitfield, int32_t value, DeoptimizeReason reason)
Definition: maglev-ir.h:6949
auto options() const
Definition: maglev-ir.h:6966
Input & target_input()
Definition: maglev-ir.h:6960
void SetValueLocationConstraints()
int32_t value() const
Definition: maglev-ir.h:6957
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:7004
CheckValueEqualsString(uint64_t bitfield, compiler::InternalizedStringRef value, DeoptimizeReason reason)
Definition: maglev-ir.h:7008
Input & target_input()
Definition: maglev-ir.h:7023
void SetValueLocationConstraints()
auto options() const
Definition: maglev-ir.h:7030
compiler::InternalizedStringRef value() const
Definition: maglev-ir.h:7020
int MaxCallStackArgs() const
Definition: maglev-ir.h:7025
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:6910
compiler::HeapObjectRef value() const
Definition: maglev-ir.h:6922
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
auto options() const
Definition: maglev-ir.h:6937
CheckValue(uint64_t bitfield, const compiler::HeapObjectRef value, DeoptimizeReason reason)
Definition: maglev-ir.h:6914
Input & target_input()
Definition: maglev-ir.h:6925
Definition: maglev-ir.h:4711
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4721
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4728
int MaxCallStackArgs() const
Definition: maglev-ir.h:4725
CheckedHoleyFloat64ToFloat64(uint64_t bitfield)
Definition: maglev-ir.h:4715
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4717
Input & input()
Definition: maglev-ir.h:4723
Definition: maglev-ir.h:4225
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4241
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & input()
Definition: maglev-ir.h:4237
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4231
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4235
void SetValueLocationConstraints()
CheckedInt32ToUint32(uint64_t bitfield)
Definition: maglev-ir.h:4229
Definition: maglev-ir.h:4304
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4320
Input & input()
Definition: maglev-ir.h:4316
CheckedIntPtrToInt32(uint64_t bitfield)
Definition: maglev-ir.h:4308
void SetValueLocationConstraints()
Definition: maglev-ir-arm.cc:165
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4314
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4310
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir-arm.cc:170
Definition: maglev-ir.h:4245
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4261
CheckedIntPtrToUint32(uint64_t bitfield)
Definition: maglev-ir.h:4249
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4255
void SetValueLocationConstraints()
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4251
Input & input()
Definition: maglev-ir.h:4257
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:7600
Input & object_input()
Definition: maglev-ir.h:7615
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7620
auto options() const
Definition: maglev-ir.h:7622
CheckedInternalizedString(uint64_t bitfield, CheckType check_type)
Definition: maglev-ir.h:7604
CheckType check_type() const
Definition: maglev-ir.h:7616
void SetValueLocationConstraints()
Definition: maglev-ir.h:4623
CheckedNumberOrOddballToFloat64(uint64_t bitfield, TaggedToFloat64ConversionType conversion_type)
Definition: maglev-ir.h:4628
Definition: maglev-ir.h:4634
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4641
CheckedNumberOrOddballToHoleyFloat64(uint64_t bitfield)
Definition: maglev-ir.h:4638
Input & input()
Definition: maglev-ir.h:4647
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4655
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4645
void SetValueLocationConstraints()
DeoptimizeReason deoptimize_reason() const
Definition: maglev-ir.h:4649
Definition: maglev-ir.h:4659
Input & input()
Definition: maglev-ir.h:4671
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4669
CheckedNumberToInt32(uint64_t bitfield)
Definition: maglev-ir.h:4663
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4665
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4675
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:4027
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4033
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4042
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4036
CheckedNumberToUint8Clamped(uint64_t bitfield)
Definition: maglev-ir.h:4031
Input & input()
Definition: maglev-ir.h:4038
void SetValueLocationConstraints()
Definition: maglev-ir.h:7629
void GenerateCode(MaglevAssembler *, const ProcessingState &)
CheckType check_type() const
Definition: maglev-ir.h:7644
auto options() const
Definition: maglev-ir.h:7651
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7649
void SetValueLocationConstraints()
Input & object_input()
Definition: maglev-ir.h:7643
CheckedObjectToIndex(uint64_t bitfield, CheckType check_type)
Definition: maglev-ir.h:7633
Definition: maglev-ir.h:3378
CheckedSmiDecrement(uint64_t bitfield)
Definition: maglev-ir.h:3382
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3393
Input & value_input()
Definition: maglev-ir.h:3389
void SetValueLocationConstraints()
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3384
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3386
static constexpr int kValueIndex
Definition: maglev-ir.h:3388
Definition: maglev-ir.h:3359
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3367
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr int kValueIndex
Definition: maglev-ir.h:3369
CheckedSmiIncrement(uint64_t bitfield)
Definition: maglev-ir.h:3363
Input & value_input()
Definition: maglev-ir.h:3370
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3365
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3374
void SetValueLocationConstraints()
Definition: maglev-ir.h:3688
Input & input()
Definition: maglev-ir.h:3700
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3704
CheckedSmiSizedInt32(uint64_t bitfield)
Definition: maglev-ir.h:3692
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3694
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3698
Definition: maglev-ir.h:4205
int MaxCallStackArgs() const
Definition: maglev-ir.h:4218
CheckedSmiTagFloat64(uint64_t bitfield)
Definition: maglev-ir.h:4209
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4211
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4221
Input & input()
Definition: maglev-ir.h:4216
void SetValueLocationConstraints()
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4213
Definition: maglev-ir.h:3665
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3671
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3674
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3680
CheckedSmiTagInt32(uint64_t bitfield)
Definition: maglev-ir.h:3669
Input & input()
Definition: maglev-ir.h:3676
void SetValueLocationConstraints()
Definition: maglev-ir.h:3727
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3733
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3742
void SetValueLocationConstraints()
Input & input()
Definition: maglev-ir.h:3738
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3736
CheckedSmiTagIntPtr(uint64_t bitfield)
Definition: maglev-ir.h:3731
Definition: maglev-ir.h:3708
Input & input()
Definition: maglev-ir.h:3719
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3714
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3717
CheckedSmiTagUint32(uint64_t bitfield)
Definition: maglev-ir.h:3712
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3723
Definition: maglev-ir.h:3817
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3839
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3823
void SetValueLocationConstraints()
CheckedSmiUntag(uint64_t bitfield)
Definition: maglev-ir.h:3821
Input & input()
Definition: maglev-ir.h:3829
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3827
Definition: maglev-ir.h:4381
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4397
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4391
CheckedTruncateFloat64ToInt32(uint64_t bitfield)
Definition: maglev-ir.h:4385
Input & input()
Definition: maglev-ir.h:4393
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4387
Definition: maglev-ir.h:4531
Input & input()
Definition: maglev-ir.h:4543
void SetValueLocationConstraints()
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4539
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4547
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4537
CheckedTruncateFloat64ToUint32(uint64_t bitfield)
Definition: maglev-ir.h:4535
Definition: maglev-ir.h:4838
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:7820
TaggedToFloat64ConversionType conversion_type() const
Definition: maglev-ir.h:4858
CheckedTruncateNumberOrOddballToInt32(uint64_t bitfield, TaggedToFloat64ConversionType conversion_type)
Definition: maglev-ir.h:4842
Input & input()
Definition: maglev-ir.h:4852
auto options() const
Definition: maglev-ir.h:4862
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4847
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4850
void SetValueLocationConstraints()
Definition: maglev-ir.h:4284
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4294
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4290
CheckedUint32ToInt32(uint64_t bitfield)
Definition: maglev-ir.h:4288
Input & input()
Definition: maglev-ir.h:4296
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4300
Definition: maglev-ir.h:11330
CheckpointedJump(uint64_t bitfield, BasicBlockRef *target_refs)
Definition: maglev-ir.h:11334
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:11342
void SetValueLocationConstraints()
Definition: maglev-interpreter-frame-state.h:582
Definition: maglev-ir.h:11265
ConditionalControlNode(uint64_t bitfield)
Definition: maglev-ir.h:11267
Definition: maglev-ir.h:9550
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & rhs()
Definition: maglev-ir.h:9562
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:9573
int MaxCallStackArgs() const
Definition: maglev-ir.h:9570
ConsStringMap(uint64_t bitfield)
Definition: maglev-ir.h:9554
Input & lhs()
Definition: maglev-ir.h:9561
Definition: maglev-ir.h:9790
void GenerateCode(MaglevAssembler *, const ProcessingState &)
ConstantGapMove(uint64_t bitfield, ValueNode *node, compiler::AllocatedOperand target)
Definition: maglev-ir.h:9794
void SetValueLocationConstraints()
compiler::AllocatedOperand target() const
Definition: maglev-ir.h:9798
ValueNode * node() const
Definition: maglev-ir.h:9799
Definition: maglev-ir.h:5592
bool IsTheHole(compiler::JSHeapBroker *broker) const
Definition: maglev-ir.h:5605
void DoLoadToRegister(MaglevAssembler *, OutputRegister)
void GenerateCode(MaglevAssembler *, const ProcessingState &)
bool ToBoolean(LocalIsolate *local_isolate) const
Definition: maglev-ir.h:5601
compiler::HeapObjectRef object()
Definition: maglev-ir.h:5613
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:7587
Constant(uint64_t bitfield, compiler::HeapObjectRef object)
Definition: maglev-ir.h:5598
void SetValueLocationConstraints()
compiler::HeapObjectRef ref() const
Definition: maglev-ir.h:5618
DirectHandle< Object > DoReify(LocalIsolate *isolate) const
Definition: maglev-ir.cc:913
Definition: maglev-ir.h:1674
const MaglevCompilationUnit & unit() const
Definition: maglev-ir.h:1684
ValueNode *& receiver()
Definition: maglev-ir.h:1685
ValueNode *& context()
Definition: maglev-ir.h:1687
SourcePosition source_position() const
Definition: maglev-ir.h:1689
ValueNode * receiver() const
Definition: maglev-ir.h:1686
ValueNode * context() const
Definition: maglev-ir.h:1688
ConstructInvokeStubDeoptFrame(const MaglevCompilationUnit &unit, SourcePosition source_position, ValueNode *receiver, ValueNode *context, DeoptFrame *parent)
Definition: maglev-ir.h:1676
Definition: maglev-ir.h:10691
const Input & new_target() const
Definition: maglev-ir.h:10717
int num_args_no_spread() const
Definition: maglev-ir.h:10721
compiler::FeedbackSource feedback() const
Definition: maglev-ir.h:10738
auto args_no_spread()
Definition: maglev-ir.h:10733
Input & new_target()
Definition: maglev-ir.h:10716
void set_arg(int i, ValueNode *node)
Definition: maglev-ir.h:10726
int num_args() const
Definition: maglev-ir.h:10720
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:10747
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & spread()
Definition: maglev-ir.h:10729
int MaxCallStackArgs() const
ConstructWithSpread(uint64_t bitfield, compiler::FeedbackSource feedback, ValueNode *function, ValueNode *new_target, ValueNode *context)
Definition: maglev-ir.h:10703
const Input & context() const
Definition: maglev-ir.h:10719
Input & context()
Definition: maglev-ir.h:10718
Input & arg(int i)
Definition: maglev-ir.h:10725
void SetValueLocationConstraints()
Definition: maglev-ir.h:10064
void set_arg(int i, ValueNode *node)
Definition: maglev-ir.h:10098
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:10116
const Input & context() const
Definition: maglev-ir.h:10095
Input & arg(int i)
Definition: maglev-ir.h:10097
int num_args() const
Definition: maglev-ir.h:10096
Input & context()
Definition: maglev-ir.h:10094
Construct(uint64_t bitfield, const compiler::FeedbackSource &feedback, ValueNode *function, ValueNode *new_target, ValueNode *context)
Definition: maglev-ir.h:10080
auto args()
Definition: maglev-ir.h:10101
void SetValueLocationConstraints()
int MaxCallStackArgs() const
const Input & new_target() const
Definition: maglev-ir.h:10093
compiler::FeedbackSource feedback() const
Definition: maglev-ir.h:10107
Input & new_target()
Definition: maglev-ir.h:10092
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:11205
void set_next_post_dominating_hole(ControlNode *node)
Definition: maglev-ir.h:11216
ControlNode * next_post_dominating_hole() const
Definition: maglev-ir.h:11213
Definition: maglev-ir.h:10890
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & object_input()
Definition: maglev-ir.h:10899
ConvertHoleToUndefined(uint64_t bitfield)
Definition: maglev-ir.h:10894
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:10903
Definition: maglev-ir.h:10753
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:10774
compiler::NativeContextRef native_context() const
Definition: maglev-ir.h:10778
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & receiver_input()
Definition: maglev-ir.h:10762
auto options() const
Definition: maglev-ir.h:10776
ConvertReceiver(uint64_t bitfield, compiler::NativeContextRef native_context, ConvertReceiverMode mode)
Definition: maglev-ir.h:10757
int MaxCallStackArgs() const
ConvertReceiverMode mode() const
Definition: maglev-ir.h:10779
Definition: maglev-ir.h:5677
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:5703
int flags() const
Definition: maglev-ir.h:5692
static constexpr OpProperties kProperties
Definition: maglev-ir.h:5695
CreateArrayLiteral(uint64_t bitfield, compiler::HeapObjectRef constant_elements, const compiler::FeedbackSource &feedback, int flags)
Definition: maglev-ir.h:5681
int MaxCallStackArgs() const
compiler::HeapObjectRef constant_elements()
Definition: maglev-ir.h:5690
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
compiler::FeedbackSource feedback() const
Definition: maglev-ir.h:5691
Definition: maglev-ir.h:6701
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
int MaxCallStackArgs() const
CreateClosure(uint64_t bitfield, compiler::SharedFunctionInfoRef shared_function_info, compiler::FeedbackCellRef feedback_cell, bool pretenured)
Definition: maglev-ir.h:6705
Input & context()
Definition: maglev-ir.h:6720
bool pretenured() const
Definition: maglev-ir.h:6718
compiler::FeedbackCellRef feedback_cell() const
Definition: maglev-ir.h:6717
compiler::SharedFunctionInfoRef shared_function_info() const
Definition: maglev-ir.h:6714
Definition: maglev-ir.h:7877
AllocationType allocation_type() const
Definition: maglev-ir.h:7885
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7897
Input & length_input()
Definition: maglev-ir.h:7893
void GenerateCode(MaglevAssembler *, const ProcessingState &)
CreateFastArrayElements(uint64_t bitfield, AllocationType allocation_type)
Definition: maglev-ir.h:7881
void SetValueLocationConstraints()
Definition: maglev-ir.h:6600
uint32_t slot_count() const
Definition: maglev-ir.h:6613
Input & context()
Definition: maglev-ir.h:6616
int MaxCallStackArgs() const
compiler::ScopeInfoRef scope_info() const
Definition: maglev-ir.h:6612
ScopeType scope_type() const
Definition: maglev-ir.h:6614
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
CreateFunctionContext(uint64_t bitfield, compiler::ScopeInfoRef scope_info, uint32_t slot_count, ScopeType scope_type)
Definition: maglev-ir.h:6604
Definition: maglev-ir.h:5745
int flags() const
Definition: maglev-ir.h:5762
int MaxCallStackArgs() const
compiler::FeedbackSource feedback() const
Definition: maglev-ir.h:5761
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:5773
void SetValueLocationConstraints()
compiler::ObjectBoilerplateDescriptionRef boilerplate_descriptor()
Definition: maglev-ir.h:5758
CreateObjectLiteral(uint64_t bitfield, compiler::ObjectBoilerplateDescriptionRef boilerplate_descriptor, const compiler::FeedbackSource &feedback, int flags)
Definition: maglev-ir.h:5749
static constexpr OpProperties kProperties
Definition: maglev-ir.h:5765
Definition: maglev-ir.h:6672
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:6693
CreateRegExpLiteral(uint64_t bitfield, compiler::StringRef pattern, const compiler::FeedbackSource &feedback, int flags)
Definition: maglev-ir.h:6676
int MaxCallStackArgs() const
void SetValueLocationConstraints()
int flags() const
Definition: maglev-ir.h:6683
compiler::FeedbackSource feedback() const
Definition: maglev-ir.h:6682
compiler::StringRef pattern()
Definition: maglev-ir.h:6681
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:5712
static constexpr OpProperties kProperties
Definition: maglev-ir.h:5730
void SetValueLocationConstraints()
CreateShallowArrayLiteral(uint64_t bitfield, compiler::HeapObjectRef constant_elements, const compiler::FeedbackSource &feedback, int flags)
Definition: maglev-ir.h:5716
compiler::FeedbackSource feedback() const
Definition: maglev-ir.h:5726
void GenerateCode(MaglevAssembler *, const ProcessingState &)
compiler::HeapObjectRef constant_elements()
Definition: maglev-ir.h:5725
int flags() const
Definition: maglev-ir.h:5727
int MaxCallStackArgs() const
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:5736
Definition: maglev-ir.h:5782
void SetValueLocationConstraints()
compiler::ObjectBoilerplateDescriptionRef boilerplate_descriptor()
Definition: maglev-ir.h:5797
int flags() const
Definition: maglev-ir.h:5801
static constexpr OpProperties kProperties
Definition: maglev-ir.h:5804
CreateShallowObjectLiteral(uint64_t bitfield, compiler::ObjectBoilerplateDescriptionRef boilerplate_descriptor, const compiler::FeedbackSource &feedback, int flags)
Definition: maglev-ir.h:5786
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:5810
compiler::FeedbackSource feedback() const
Definition: maglev-ir.h:5800
void GenerateCode(MaglevAssembler *, const ProcessingState &)
int MaxCallStackArgs() const
Definition: maglev-ir.h:7564
void MarkTaggedInputsAsDecompressing()
Definition: maglev-ir.h:7572
void VerifyInputs(MaglevGraphLabeller *) const
Definition: maglev-ir.h:7571
void SetValueLocationConstraints()
Definition: maglev-ir.h:7568
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7570
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:7569
Definition: maglev-ir.h:7551
void GenerateCode(MaglevAssembler *, const ProcessingState &)
DebugBreak(uint64_t bitfield)
Definition: maglev-ir.h:7555
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7561
Definition: maglev-ir.h:9733
Input & flags_input()
Definition: maglev-ir.h:9759
Input & key_input()
Definition: maglev-ir.h:9757
Input & value_input()
Definition: maglev-ir.h:9758
int MaxCallStackArgs() const
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:9764
Input & context()
Definition: maglev-ir.h:9755
void SetValueLocationConstraints()
DefineKeyedOwnGeneric(uint64_t bitfield, const compiler::FeedbackSource &feedback)
Definition: maglev-ir.h:9737
compiler::FeedbackSource feedback() const
Definition: maglev-ir.h:9748
Input & object_input()
Definition: maglev-ir.h:9756
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:9597
Input & value_input()
Definition: maglev-ir.h:9619
int MaxCallStackArgs() const
compiler::NameRef name() const
Definition: maglev-ir.h:9611
compiler::FeedbackSource feedback() const
Definition: maglev-ir.h:9612
void SetValueLocationConstraints()
Input & context()
Definition: maglev-ir.h:9617
void GenerateCode(MaglevAssembler *, const ProcessingState &)
DefineNamedOwnGeneric(uint64_t bitfield, compiler::NameRef name, const compiler::FeedbackSource &feedback)
Definition: maglev-ir.h:9601
Input & object_input()
Definition: maglev-ir.h:9618
Definition: maglev-ir.h:5149
LanguageMode mode() const
Definition: maglev-ir.h:5166
Input & context()
Definition: maglev-ir.h:5162
void SetValueLocationConstraints()
int MaxCallStackArgs() const
DeleteProperty(uint64_t bitfield, LanguageMode mode)
Definition: maglev-ir.h:5153
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:7597
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:5158
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr OpProperties kProperties
Definition: maglev-ir.h:5157
Input & object()
Definition: maglev-ir.h:5163
Input & key()
Definition: maglev-ir.h:5164
Definition: maglev-ir.h:1511
SourcePosition GetSourcePosition() const
Definition: maglev-ir.h:1798
const InlinedArgumentsDeoptFrame & as_inlined_arguments() const
Definition: maglev-ir.h:1664
const ConstructInvokeStubDeoptFrame & as_construct_stub() const
Definition: maglev-ir.h:1703
VirtualObjectList GetVirtualObjects() const
Definition: maglev-interpreter-frame-state.h:1176
compiler::SharedFunctionInfoRef GetSharedFunctionInfo() const
Definition: maglev-ir.h:1813
DeoptFrame(InterpretedFrameData &&data, DeoptFrame *parent)
Definition: maglev-ir.h:1581
DeoptFrame * parent()
Definition: maglev-ir.h:1560
const DeoptFrame * parent() const
Definition: maglev-ir.h:1561
DeoptFrame(const FrameData &data, DeoptFrame *parent)
Definition: maglev-ir.h:1556
FrameData data_
Definition: maglev-ir.h:1590
bool IsJsFrame() const
Definition: maglev-ir.h:1756
DeoptFrame(FrameData &&data, DeoptFrame *parent)
Definition: maglev-ir.h:1553
DeoptFrame(InlinedArgumentsFrameData &&data, DeoptFrame *parent)
Definition: maglev-ir.h:1583
const InterpretedDeoptFrame & as_interpreted() const
Definition: maglev-ir.h:1626
const MaglevCompilationUnit & GetCompilationUnit() const
Definition: maglev-ir.h:1770
compiler::BytecodeArrayRef GetBytecodeArray() const
Definition: maglev-ir.h:1818
FrameType
Definition: maglev-ir.h:1513
@ kConstructInvokeStubFrame
@ kBuiltinContinuationFrame
DeoptFrame(ConstructInvokeStubFrameData &&data, DeoptFrame *parent)
Definition: maglev-ir.h:1585
DeoptFrame *const parent_
Definition: maglev-ir.h:1591
const BuiltinContinuationDeoptFrame & as_builtin_continuation() const
Definition: maglev-ir.h:1747
FrameType type() const
Definition: maglev-ir.h:1559
BytecodeOffset GetBytecodeOffset() const
Definition: maglev-ir.h:1783
DeoptFrame(BuiltinContinuationFrameData &&data, DeoptFrame *parent)
Definition: maglev-ir.h:1587
Definition: maglev-ir.h:1822
InputLocation * input_locations() const
Definition: maglev-ir.h:1835
const DeoptFrame & top_frame() const
Definition: maglev-ir.h:1829
void set_translation_index(int index)
Definition: maglev-ir.h:1844
bool has_input_locations() const
Definition: maglev-ir.h:1834
DeoptFrame & top_frame()
Definition: maglev-ir.h:1828
void InitializeInputLocations(Zone *zone, size_t count)
Definition: maglev-ir.cc:341
const compiler::FeedbackSource & feedback_to_update() const
Definition: maglev-ir.h:1830
int translation_index() const
Definition: maglev-ir.h:1843
DeoptInfo(Zone *zone, const DeoptFrame top_frame, compiler::FeedbackSource feedback_to_update)
Definition: maglev-ir.cc:384
Label * deopt_entry_label()
Definition: maglev-ir.h:1841
Definition: maglev-ir.h:11408
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Deopt(uint64_t bitfield, DeoptimizeReason reason)
Definition: maglev-ir.h:11412
void SetValueLocationConstraints()
Definition: maglev-ir.h:1867
EagerDeoptInfo(Zone *zone, const DeoptFrame top_frame, compiler::FeedbackSource feedback_to_update)
Definition: maglev-ir.h:1869
DeoptimizeReason reason() const
Definition: maglev-ir.h:1873
void set_reason(DeoptimizeReason reason)
Definition: maglev-ir.h:1874
void ForEachInput(Function &&f)
Definition: maglev-deopt-frame-visitor.h:113
Definition: maglev-ir.h:8349
EnsureWritableFastElements(uint64_t bitfield)
Definition: maglev-ir.h:8353
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:8369
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & object_input()
Definition: maglev-ir.h:8364
int MaxCallStackArgs() const
Definition: maglev-ir.h:8366
Input & elements_input()
Definition: maglev-ir.h:8363
Definition: maglev-ir.h:1980
ExceptionHandlerInfo(BasicBlockRef *catch_block_ref, int depth)
Definition: maglev-ir.h:1991
base::ThreadedList< ExceptionHandlerInfo > List
Definition: maglev-ir.h:1982
int pc_offset() const
Definition: maglev-ir.h:2016
ExceptionHandlerInfo(BasicBlock *catch_block_ref, int depth)
Definition: maglev-ir.h:1997
BasicBlock * catch_block() const
Definition: maglev-ir.h:2008
Label & trampoline_entry()
Definition: maglev-ir.h:2004
Mode
Definition: maglev-ir.h:1983
@ kNoExceptionHandler
Definition: maglev-ir.h:1984
@ kLazyDeopt
Definition: maglev-ir.h:1985
bool ShouldLazyDeopt() const
Definition: maglev-ir.h:2002
bool HasExceptionHandler() const
Definition: maglev-ir.h:2000
BasicBlockRef * catch_block_ref_address()
Definition: maglev-ir.h:2006
void set_pc_offset(int offset)
Definition: maglev-ir.h:2017
int depth() const
Definition: maglev-ir.h:2010
ExceptionHandlerInfo(Mode mode=kNoExceptionHandler)
Definition: maglev-ir.h:1988
Definition: maglev-ir.h:8373
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
int MaxCallStackArgs() const
Definition: maglev-ir.h:8393
int old_length() const
Definition: maglev-ir.h:8398
Input & object_input()
Definition: maglev-ir.h:8391
Input & property_array_input()
Definition: maglev-ir.h:8390
ExtendPropertiesBackingStore(uint64_t bitfield, int old_length)
Definition: maglev-ir.h:8377
Definition: maglev-ir.h:5564
void DoLoadToRegister(MaglevAssembler *, OutputRegister)
ExternalReference reference() const
Definition: maglev-ir.h:5577
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
ExternalConstant(uint64_t bitfield, const ExternalReference &reference)
Definition: maglev-ir.h:5570
bool ToBoolean(LocalIsolate *local_isolate) const
Definition: maglev-ir.h:5579
DirectHandle< Object > DoReify(LocalIsolate *isolate) const
Definition: maglev-ir.cc:884
static constexpr OpProperties kProperties
Definition: maglev-ir.h:5574
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:7539
Definition: maglev-ir.h:6636
int MaxCallStackArgs() const
FastCreateClosure(uint64_t bitfield, compiler::SharedFunctionInfoRef shared_function_info, compiler::FeedbackCellRef feedback_cell)
Definition: maglev-ir.h:6640
void GenerateCode(MaglevAssembler *, const ProcessingState &)
compiler::SharedFunctionInfoRef shared_function_info() const
Definition: maglev-ir.h:6647
void SetValueLocationConstraints()
Input & context()
Definition: maglev-ir.h:6652
compiler::FeedbackCellRef feedback_cell() const
Definition: maglev-ir.h:6650
Definition: maglev-ir.h:4420
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir-arm.cc:642
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4434
Input & input()
Definition: maglev-ir.h:4430
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4426
Float64Abs(uint64_t bitfield)
Definition: maglev-ir.h:4424
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4428
Definition: maglev-ir.h:3429
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3433
Input & right_input()
Definition: maglev-ir.h:3441
static constexpr int kRightIndex
Definition: maglev-ir.h:3439
Input & left_input()
Definition: maglev-ir.h:3440
static constexpr int kLeftIndex
Definition: maglev-ir.h:3438
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3446
Float64BinaryNodeWithCall(uint64_t bitfield)
Definition: maglev-ir.h:3444
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3435
Definition: maglev-ir.h:3397
static constexpr int kRightIndex
Definition: maglev-ir.h:3406
Input & right_input()
Definition: maglev-ir.h:3408
Float64BinaryNode(uint64_t bitfield)
Definition: maglev-ir.h:3411
Input & left_input()
Definition: maglev-ir.h:3407
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3401
static constexpr int kLeftIndex
Definition: maglev-ir.h:3405
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3402
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3413
Definition: maglev-ir.h:3472
Float64Compare(uint64_t bitfield, Operation operation)
Definition: maglev-ir.h:3476
void SetValueLocationConstraints()
static constexpr int kRightIndex
Definition: maglev-ir.h:3483
void GenerateCode(MaglevAssembler *, const ProcessingState &)
constexpr Operation operation() const
Definition: maglev-ir.h:3487
static constexpr int kLeftIndex
Definition: maglev-ir.h:3482
Input & right_input()
Definition: maglev-ir.h:3485
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:7966
Input & left_input()
Definition: maglev-ir.h:3484
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3479
auto options() const
Definition: maglev-ir.h:3495
Definition: maglev-ir.h:3944
Float64 value() const
Definition: maglev-ir.h:3955
void SetValueLocationConstraints()
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3953
bool ToBoolean(LocalIsolate *local_isolate) const
Definition: maglev-ir.h:3957
Float64Constant(uint64_t bitfield, Float64 value)
Definition: maglev-ir.h:3950
DirectHandle< Object > DoReify(LocalIsolate *isolate) const
Definition: maglev-ir.cc:908
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:7569
void DoLoadToRegister(MaglevAssembler *, OutputRegister)
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:4475
Float64CountLeadingZeros(uint64_t bitfield)
Definition: maglev-ir.h:4481
Input & input()
Definition: maglev-ir.h:4487
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4484
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4491
static Builtin continuation()
Definition: maglev-ir.h:4479
void SetValueLocationConstraints()
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4485
Definition: maglev-ir.h:3563
Ieee754Function
Definition: maglev-ir.h:3567
DECL_ENUM(MathName, ExtName, EnumName)
ExternalReference ieee_function_ref() const
Definition: maglev-ir.cc:503
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3578
void SetValueLocationConstraints()
Definition: maglev-ir-arm.cc:698
Input & input()
Definition: maglev-ir.h:3580
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:7997
Ieee754Function ieee_function() const
Definition: maglev-ir.h:3589
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir-arm.cc:702
Float64Ieee754Unary(uint64_t bitfield, Ieee754Function ieee_function)
Definition: maglev-ir.h:3572
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3575
int MaxCallStackArgs() const
Definition: maglev-ir-arm.cc:697
auto options() const
Definition: maglev-ir.h:3587
Definition: maglev-ir.h:3525
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3533
void SetValueLocationConstraints()
Definition: maglev-ir-arm.cc:631
Float64Negate(uint64_t bitfield)
Definition: maglev-ir.h:3529
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3539
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir-arm.cc:635
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3531
Input & input()
Definition: maglev-ir.h:3535
Definition: maglev-ir.h:4494
void SetValueLocationConstraints()
Float64Round(uint64_t bitfield, Kind kind)
Definition: maglev-ir.h:4511
Input & input()
Definition: maglev-ir.h:4517
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:8009
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4515
Kind kind() const
Definition: maglev-ir.h:4518
auto options() const
Definition: maglev-ir.h:4524
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4513
static Builtin continuation(Kind kind)
Definition: maglev-ir.h:4500
Kind
Definition: maglev-ir.h:4498
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir-arm.cc:649
Definition: maglev-ir.h:3501
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:7971
Input & value()
Definition: maglev-ir.h:3511
auto options() const
Definition: maglev-ir.h:3519
constexpr bool flip() const
Definition: maglev-ir.h:3513
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Float64ToBoolean(uint64_t bitfield, bool flip)
Definition: maglev-ir.h:3505
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3508
Definition: maglev-ir.h:4144
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4150
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4152
int MaxCallStackArgs() const
Definition: maglev-ir.h:4158
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4161
Input & input()
Definition: maglev-ir.h:4156
Float64ToHeapNumberForField(uint64_t bitfield)
Definition: maglev-ir.h:4148
Definition: maglev-ir.h:4105
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4113
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4124
Float64ToTagged(uint64_t bitfield, ConversionMode mode)
Definition: maglev-ir.h:4110
ConversionMode conversion_mode() const
Definition: maglev-ir.h:4128
void SetValueLocationConstraints()
Input & input()
Definition: maglev-ir.h:4119
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4115
void GenerateCode(MaglevAssembler *, const ProcessingState &)
ConversionMode
Definition: maglev-ir.h:4109
int MaxCallStackArgs() const
Definition: maglev-ir.h:4121
auto options() const
Definition: maglev-ir.h:4126
Definition: maglev-ir.h:4009
Input & input()
Definition: maglev-ir.h:4019
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4015
Float64ToUint8Clamped(uint64_t bitfield)
Definition: maglev-ir.h:4013
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4023
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4017
Definition: maglev-ir.h:5298
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
int MaxCallStackArgs() const
Input & cache_index()
Definition: maglev-ir.h:5317
compiler::FeedbackSource feedback() const
Definition: maglev-ir.h:5311
Input & receiver()
Definition: maglev-ir.h:5314
ForInNext(uint64_t bitfield, compiler::FeedbackSource &feedback)
Definition: maglev-ir.h:5302
Input & cache_type()
Definition: maglev-ir.h:5316
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:5322
static constexpr OpProperties kProperties
Definition: maglev-ir.h:5305
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:5306
Input & context()
Definition: maglev-ir.h:5313
Input & cache_array()
Definition: maglev-ir.h:5315
Definition: maglev-ir.h:5270
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:5279
int ReturnCount() const
Definition: maglev-ir.h:5287
void SetValueLocationConstraints()
compiler::FeedbackSource feedback() const
Definition: maglev-ir.h:5282
Input & enumerator()
Definition: maglev-ir.h:5285
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:5292
Input & context()
Definition: maglev-ir.h:5284
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr OpProperties kProperties
Definition: maglev-ir.h:5277
int MaxCallStackArgs() const
ForInPrepare(uint64_t bitfield, compiler::FeedbackSource &feedback)
Definition: maglev-ir.h:5274
Definition: maglev-ir.h:7579
FunctionEntryStackCheck(uint64_t bitfield)
Definition: maglev-ir.h:7583
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7596
int MaxCallStackArgs() const
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:9770
void SetValueLocationConstraints()
compiler::AllocatedOperand target() const
Definition: maglev-ir.h:9779
GapMove(uint64_t bitfield, compiler::AllocatedOperand source, compiler::AllocatedOperand target)
Definition: maglev-ir.h:9774
void GenerateCode(MaglevAssembler *, const ProcessingState &)
compiler::AllocatedOperand source() const
Definition: maglev-ir.h:9778
Definition: maglev-ir.h:5451
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:5459
void GenerateCode(MaglevAssembler *, const ProcessingState &)
GeneratorRestoreRegister(uint64_t bitfield, int index)
Definition: maglev-ir.h:5455
static constexpr OpProperties kProperties
Definition: maglev-ir.h:5458
Input & array_input()
Definition: maglev-ir.h:5462
Input & stale_input()
Definition: maglev-ir.h:5463
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:5468
void SetValueLocationConstraints()
int index() const
Definition: maglev-ir.h:5464
Definition: maglev-ir.h:5177
static constexpr int kGeneratorIndex
Definition: maglev-ir.h:5183
static constexpr int kFixedInputCount
Definition: maglev-ir.h:5184
static constexpr OpProperties kProperties
Definition: maglev-ir.h:5197
int suspend_id() const
Definition: maglev-ir.h:5201
Input & generator_input()
Definition: maglev-ir.h:5205
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:5226
void GenerateCode(MaglevAssembler *, const ProcessingState &)
GeneratorStore(uint64_t bitfield, ValueNode *context, ValueNode *generator, int suspend_id, int bytecode_offset)
Definition: maglev-ir.h:5188
int num_parameters_and_registers() const
Definition: maglev-ir.h:5207
Input & context_input()
Definition: maglev-ir.h:5204
void set_parameters_and_registers(int i, ValueNode *node)
Definition: maglev-ir.h:5211
void VerifyInputs(MaglevGraphLabeller *graph_labeller) const
Definition: maglev-ir.cc:571
static constexpr int kContextIndex
Definition: maglev-ir.h:5182
int MaxCallStackArgs() const
void SetValueLocationConstraints()
int bytecode_offset() const
Definition: maglev-ir.h:5202
Input & parameters_and_registers(int i)
Definition: maglev-ir.h:5210
Definition: maglev-ir.h:11170
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:11179
GetContinuationPreservedEmbedderData(uint64_t bitfield)
Definition: maglev-ir.h:11174
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
Definition: maglev-ir.h:5328
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:5353
int MaxCallStackArgs() const
Input & receiver()
Definition: maglev-ir.h:5344
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:5340
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr OpProperties kProperties
Definition: maglev-ir.h:5339
int load_slot() const
Definition: maglev-ir.h:5346
int call_slot() const
Definition: maglev-ir.h:5347
void SetValueLocationConstraints()
Input & context()
Definition: maglev-ir.h:5343
IndirectHandle< FeedbackVector > feedback() const
Definition: maglev-ir.h:5348
GetIterator(uint64_t bitfield, int load_slot, int call_slot, compiler::FeedbackVectorRef feedback)
Definition: maglev-ir.h:5332
Definition: maglev-ir.h:9666
int MaxCallStackArgs() const
Input & context()
Definition: maglev-ir.h:9685
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & object_input()
Definition: maglev-ir.h:9686
Input & key_input()
Definition: maglev-ir.h:9687
GetKeyedGeneric(uint64_t bitfield, const compiler::FeedbackSource &feedback)
Definition: maglev-ir.h:9670
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:9692
void SetValueLocationConstraints()
compiler::FeedbackSource feedback() const
Definition: maglev-ir.h:9680
Definition: maglev-ir.h:5362
GetSecondReturnedValue(uint64_t bitfield)
Definition: maglev-ir.h:5370
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr OpProperties kProperties
Definition: maglev-ir.h:5369
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:5374
Definition: maglev-ir.h:7657
int MaxCallStackArgs() const
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7684
GetTemplateObject(uint64_t bitfield, compiler::SharedFunctionInfoRef shared_function_info, const compiler::FeedbackSource &feedback)
Definition: maglev-ir.h:7661
compiler::FeedbackSource feedback() const
Definition: maglev-ir.h:7679
compiler::SharedFunctionInfoRef shared_function_info()
Definition: maglev-ir.h:7676
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & description()
Definition: maglev-ir.h:7674
void SetValueLocationConstraints()
Definition: maglev-ir.h:10907
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:10919
HandleNoHeapWritesInterrupt(uint64_t bitfield)
Definition: maglev-ir.h:10911
int MaxCallStackArgs() const
Definition: maglev-ir.h:10920
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
Definition: maglev-ir.h:10917
Definition: maglev-ir.h:7692
int MaxCallStackArgs() const
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & object()
Definition: maglev-ir.h:7707
void SetValueLocationConstraints()
HasInPrototypeChain(uint64_t bitfield, compiler::HeapObjectRef prototype)
Definition: maglev-ir.h:7696
compiler::HeapObjectRef prototype()
Definition: maglev-ir.h:7709
Definition: maglev-ir.h:4790
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4797
HoleyFloat64IsHole(uint64_t bitfield)
Definition: maglev-ir.h:4794
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4803
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & input()
Definition: maglev-ir.h:4799
Definition: maglev-ir.h:4732
void SetValueLocationConstraints()
Definition: maglev-ir-arm.cc:765
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir-arm.cc:769
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4747
Input & input()
Definition: maglev-ir.h:4742
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4740
int MaxCallStackArgs() const
Definition: maglev-ir.h:4744
HoleyFloat64ToMaybeNanFloat64(uint64_t bitfield)
Definition: maglev-ir.h:4736
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4738
Definition: maglev-ir.h:4165
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4175
ConversionMode conversion_mode() const
Definition: maglev-ir.h:4192
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4173
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4184
void SetValueLocationConstraints()
void SetMode(ConversionMode mode)
Definition: maglev-ir.h:4186
void GenerateCode(MaglevAssembler *, const ProcessingState &)
ConversionMode
Definition: maglev-ir.h:4169
HoleyFloat64ToTagged(uint64_t bitfield, ConversionMode mode)
Definition: maglev-ir.h:4170
int MaxCallStackArgs() const
Definition: maglev-ir.h:4181
auto options() const
Definition: maglev-ir.h:4190
Input & input()
Definition: maglev-ir.h:4179
Definition: maglev-ir.h:3047
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3067
Identity(uint64_t bitfield)
Definition: maglev-ir.h:3053
void SetValueLocationConstraints()
Definition: maglev-ir.h:3065
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:3066
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3051
void VerifyInputs(MaglevGraphLabeller *) const
Definition: maglev-ir.h:3055
Definition: maglev-ir.h:5474
interpreter::Register source() const
Definition: maglev-ir.h:5480
static uint32_t stack_slot(uint32_t register_idx)
uint32_t stack_slot() const
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
auto options() const
Definition: maglev-ir.h:5488
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:7602
InitialValue(uint64_t bitfield, interpreter::Register source)
Definition: maglev-ir.cc:167
Definition: maglev-ir.h:6276
static constexpr OpProperties kProperties
Definition: maglev-ir.h:6290
void SetElided()
Definition: maglev-ir.h:6328
void VerifyInputs(MaglevGraphLabeller *graph_labeller) const
Definition: maglev-ir.cc:820
void ForceEscaping()
Definition: maglev-ir.h:6323
int non_escaping_use_count() const
Definition: maglev-ir.h:6310
bool HasBeenElided() const
Definition: maglev-ir.h:6337
void UpdateObject(VirtualObject *object)
Definition: maglev-ir.h:6350
void SetEscaped()
Definition: maglev-ir.h:6332
size_t size() const
Definition: maglev-ir.h:6300
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir-arm.cc:132
AllocationBlock * allocation_block()
Definition: maglev-ir.cc:827
bool HasEscaped() const
Definition: maglev-ir.h:6342
InlinedAllocation(uint64_t bitfield, VirtualObject *object)
Definition: maglev-ir.h:6282
void SetValueLocationConstraints()
Definition: maglev-ir-arm.cc:123
bool IsEscaping() const
Definition: maglev-ir.h:6319
void AddNonEscapingUses(int n=1)
Definition: maglev-ir.h:6315
void RemoveNonEscapingUses(int n=1)
Definition: maglev-ir.h:6312
VirtualObject * object() const
Definition: maglev-ir.h:6302
bool HasBeenAnalysed() const
Definition: maglev-ir.h:6346
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:6292
void set_offset(int offset)
Definition: maglev-ir.h:6308
Input & allocation_block_input()
Definition: maglev-ir.h:6287
int offset() const
Definition: maglev-ir.h:6304
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:7653
base::ThreadedList< InlinedAllocation > List
Definition: maglev-ir.h:6280
Definition: maglev-ir.h:1635
ValueNode * closure() const
Definition: maglev-ir.h:1649
BytecodeOffset bytecode_position() const
Definition: maglev-ir.h:1647
const MaglevCompilationUnit & unit() const
Definition: maglev-ir.h:1646
InlinedArgumentsDeoptFrame(const MaglevCompilationUnit &unit, BytecodeOffset bytecode_position, ValueNode *closure, base::Vector< ValueNode * > arguments, DeoptFrame *parent)
Definition: maglev-ir.h:1637
base::Vector< ValueNode * > arguments() const
Definition: maglev-ir.h:1650
ValueNode *& closure()
Definition: maglev-ir.h:1648
Definition: maglev-ir.h:4401
Int32AbsWithOverflow(uint64_t bitfield)
Definition: maglev-ir.h:4413
Input & input()
Definition: maglev-ir.h:4411
static constexpr int kValueIndex
Definition: maglev-ir.h:4410
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4417
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir-arm.cc:42
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4405
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4408
void SetValueLocationConstraints()
Definition: maglev-ir.h:3191
static constexpr int kRightIndex
Definition: maglev-ir.h:3200
Input & left_input()
Definition: maglev-ir.h:3201
static constexpr int kLeftIndex
Definition: maglev-ir.h:3199
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3195
Int32BinaryNode(uint64_t bitfield)
Definition: maglev-ir.h:3205
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3196
Input & right_input()
Definition: maglev-ir.h:3202
Definition: maglev-ir.h:3149
Int32BinaryWithOverflowNode(uint64_t bitfield)
Definition: maglev-ir.h:3164
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3155
static constexpr int kRightIndex
Definition: maglev-ir.h:3159
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3166
static constexpr int kLeftIndex
Definition: maglev-ir.h:3158
Input & right_input()
Definition: maglev-ir.h:3161
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3153
Input & left_input()
Definition: maglev-ir.h:3160
Definition: maglev-ir.h:3217
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3225
Int32BitwiseNot(uint64_t bitfield)
Definition: maglev-ir.h:3221
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir-arm.cc:551
static constexpr int kValueIndex
Definition: maglev-ir.h:3227
void SetValueLocationConstraints()
Definition: maglev-ir-arm.cc:546
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3223
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3232
Input & value_input()
Definition: maglev-ir.h:3228
Definition: maglev-ir.h:3283
static constexpr int kLeftIndex
Definition: maglev-ir.h:3293
constexpr Operation operation() const
Definition: maglev-ir.h:3298
auto options() const
Definition: maglev-ir.h:3306
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:7978
void SetValueLocationConstraints()
Int32Compare(uint64_t bitfield, Operation operation)
Definition: maglev-ir.h:3287
Input & left_input()
Definition: maglev-ir.h:3295
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3290
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr int kRightIndex
Definition: maglev-ir.h:3294
Input & right_input()
Definition: maglev-ir.h:3296
Definition: maglev-ir.h:3866
void GenerateCode(MaglevAssembler *, const ProcessingState &)
bool ToBoolean(LocalIsolate *local_isolate) const
Definition: maglev-ir.h:3879
void SetValueLocationConstraints()
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3875
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:7554
int32_t value() const
Definition: maglev-ir.h:3877
DirectHandle< Object > DoReify(LocalIsolate *isolate) const
Definition: maglev-ir.cc:896
void DoLoadToRegister(MaglevAssembler *, OutputRegister)
Int32Constant(uint64_t bitfield, int32_t value)
Definition: maglev-ir.h:3872
Definition: maglev-ir.h:4438
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4452
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4444
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4446
void SetValueLocationConstraints()
Int32CountLeadingZeros(uint64_t bitfield)
Definition: maglev-ir.h:4442
Input & input()
Definition: maglev-ir.h:4448
Definition: maglev-ir.h:3262
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3270
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3269
Int32ShiftRightLogical(uint64_t bitfield)
Definition: maglev-ir.h:3266
Input & left_input()
Definition: maglev-ir.h:3275
static constexpr int kRightIndex
Definition: maglev-ir.h:3274
void SetValueLocationConstraints()
Input & right_input()
Definition: maglev-ir.h:3276
static constexpr int kLeftIndex
Definition: maglev-ir.h:3273
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3280
Definition: maglev-ir.h:3312
Input & value()
Definition: maglev-ir.h:3321
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3319
constexpr bool flip() const
Definition: maglev-ir.h:3323
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:7983
Int32ToBoolean(uint64_t bitfield, bool flip)
Definition: maglev-ir.h:3316
auto options() const
Definition: maglev-ir.h:3329
Definition: maglev-ir.h:4045
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4062
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & input()
Definition: maglev-ir.h:4057
int MaxCallStackArgs() const
Definition: maglev-ir.h:4059
Int32ToNumber(uint64_t bitfield)
Definition: maglev-ir.h:4049
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4055
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4051
Definition: maglev-ir.h:3973
Int32ToUint8Clamped(uint64_t bitfield)
Definition: maglev-ir.h:3977
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3979
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
Input & input()
Definition: maglev-ir.h:3983
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3981
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3987
Definition: maglev-ir.h:3236
static constexpr int kValueIndex
Definition: maglev-ir.h:3245
Int32UnaryWithOverflowNode(uint64_t bitfield)
Definition: maglev-ir.h:3249
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3240
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3243
Input & value_input()
Definition: maglev-ir.h:3246
Definition: maglev-ir.h:3918
void DoLoadToRegister(MaglevAssembler *, OutputRegister)
DirectHandle< Object > DoReify(LocalIsolate *isolate) const
Definition: maglev-ir.cc:904
bool ToBoolean(LocalIsolate *local_isolate) const
Definition: maglev-ir.h:3931
IntPtrConstant(uint64_t bitfield, intptr_t value)
Definition: maglev-ir.h:3924
void SetValueLocationConstraints()
intptr_t value() const
Definition: maglev-ir.h:3929
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:7564
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3927
Definition: maglev-ir.h:3335
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3342
constexpr bool flip() const
Definition: maglev-ir.h:3346
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:7990
IntPtrToBoolean(uint64_t bitfield, bool flip)
Definition: maglev-ir.h:3339
Input & value()
Definition: maglev-ir.h:3344
auto options() const
Definition: maglev-ir.h:3352
Definition: maglev-ir.h:4085
void SetValueLocationConstraints()
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4091
Input & input()
Definition: maglev-ir.h:4097
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4102
IntPtrToNumber(uint64_t bitfield)
Definition: maglev-ir.h:4089
void GenerateCode(MaglevAssembler *, const ProcessingState &)
int MaxCallStackArgs() const
Definition: maglev-ir.h:4099
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4095
Definition: maglev-ir.h:1594
int ComputeReturnOffset(interpreter::Register result_location, int result_size) const
Definition: maglev-ir.cc:413
const MaglevCompilationUnit & unit() const
Definition: maglev-ir.h:1604
InterpretedDeoptFrame(const MaglevCompilationUnit &unit, const CompactInterpreterFrameState *frame_state, ValueNode *closure, BytecodeOffset bytecode_position, SourcePosition source_position, DeoptFrame *parent)
Definition: maglev-ir.h:1596
BytecodeOffset bytecode_position() const
Definition: maglev-ir.h:1610
ValueNode * closure() const
Definition: maglev-ir.h:1609
ValueNode *& closure()
Definition: maglev-ir.h:1608
SourcePosition source_position() const
Definition: maglev-ir.h:1611
const CompactInterpreterFrameState * frame_state() const
Definition: maglev-ir.h:1605
Definition: maglev-ir.h:11345
void GenerateCode(MaglevAssembler *, const ProcessingState &)
JumpLoop(uint64_t bitfield, BasicBlock *target)
Definition: maglev-ir.h:11349
base::Vector< Input > used_nodes()
Definition: maglev-ir.h:11359
void set_used_nodes(base::Vector< Input > locations)
Definition: maglev-ir.h:11360
JumpLoop(uint64_t bitfield, BasicBlockRef *ref)
Definition: maglev-ir.h:11352
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:11357
Definition: maglev-ir.h:11317
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:11326
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Jump(uint64_t bitfield, BasicBlockRef *target_refs)
Definition: maglev-ir.h:11321
Definition: maglev-ir.h:1885
interpreter::Register result_location() const
Definition: maglev-ir.h:1896
bool HasResultLocation() const
Definition: maglev-ir.h:1906
static bool InReturnValues(interpreter::Register reg, interpreter::Register result_location, int result_size)
Definition: maglev-ir.cc:403
void set_deopting_call_return_pc(int pc)
Definition: maglev-ir.h:1919
int deopting_call_return_pc() const
Definition: maglev-ir.h:1914
void ForEachInput(Function &&f)
Definition: maglev-deopt-frame-visitor.h:123
bool IsResultRegister(interpreter::Register reg) const
Definition: maglev-ir.cc:388
int result_size() const
Definition: maglev-ir.h:1900
LazyDeoptInfo(Zone *zone, const DeoptFrame top_frame, interpreter::Register result_location, int result_size, compiler::FeedbackSource feedback_to_update)
Definition: maglev-ir.h:1887
const InterpretedDeoptFrame & GetFrameForExceptionHandler(const ExceptionHandlerInfo *handler_info)
Definition: maglev-ir.cc:436
Definition: maglev-ir.h:8642
LoadDoubleDataViewElement(uint64_t bitfield, ExternalArrayType type)
Definition: maglev-ir.h:8648
bool is_little_endian_constant()
Definition: maglev-ir.h:8666
Input & index_input()
Definition: maglev-ir.h:8663
Input & object_input()
Definition: maglev-ir.h:8662
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & is_little_endian_input()
Definition: maglev-ir.h:8664
auto options() const
Definition: maglev-ir.h:8674
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:8672
Definition: maglev-ir.h:8215
int offset() const
Definition: maglev-ir.h:8227
void GenerateCode(MaglevAssembler *, const ProcessingState &)
LoadDoubleField(uint64_t bitfield, int offset)
Definition: maglev-ir.h:8219
Input & object_input()
Definition: maglev-ir.h:8230
auto options() const
Definition: maglev-ir.h:8236
void SetValueLocationConstraints()
Definition: maglev-ir.h:9437
void GenerateCode(MaglevAssembler *, const ProcessingState &)
LoadEnumCacheLength(uint64_t bitfield)
Definition: maglev-ir.h:9441
Input & map_input()
Definition: maglev-ir.h:9449
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:9453
Definition: maglev-ir.h:8328
LoadFixedArrayElement(uint64_t bitfield)
Definition: maglev-ir.h:8332
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & index_input()
Definition: maglev-ir.h:8341
void SetValueLocationConstraints()
Input & elements_input()
Definition: maglev-ir.h:8340
Definition: maglev-ir.h:8505
Input & elements_input()
Definition: maglev-ir.h:8518
Input & index_input()
Definition: maglev-ir.h:8519
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:8523
void SetValueLocationConstraints()
LoadFixedDoubleArrayElement(uint64_t bitfield)
Definition: maglev-ir.h:8509
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:8242
void SetValueLocationConstraints()
auto options() const
Definition: maglev-ir.h:8263
int offset() const
Definition: maglev-ir.h:8254
LoadFloat64(uint64_t bitfield, int offset)
Definition: maglev-ir.h:8246
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & object_input()
Definition: maglev-ir.h:8257
Definition: maglev-ir.h:9245
void GenerateCode(MaglevAssembler *, const ProcessingState &)
int MaxCallStackArgs() const
LoadGlobal(uint64_t bitfield, compiler::NameRef name, const compiler::FeedbackSource &feedback, TypeofMode typeof_mode)
Definition: maglev-ir.h:9249
compiler::FeedbackSource feedback() const
Definition: maglev-ir.h:9263
Input & context()
Definition: maglev-ir.h:9266
TypeofMode typeof_mode() const
Definition: maglev-ir.h:9264
compiler::NameRef name() const
Definition: maglev-ir.h:9262
void SetValueLocationConstraints()
Definition: maglev-ir.h:8551
void GenerateCode(MaglevAssembler *, const ProcessingState &)
LoadHoleyFixedDoubleArrayElementCheckedNotHole(uint64_t bitfield)
Definition: maglev-ir.h:8556
Input & index_input()
Definition: maglev-ir.h:8568
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:8572
Input & elements_input()
Definition: maglev-ir.h:8567
void SetValueLocationConstraints()
Definition: maglev-ir.h:8527
LoadHoleyFixedDoubleArrayElement(uint64_t bitfield)
Definition: maglev-ir.h:8531
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:8546
Input & index_input()
Definition: maglev-ir.h:8542
void SetValueLocationConstraints()
Input & elements_input()
Definition: maglev-ir.h:8541
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:8269
auto options() const
Definition: maglev-ir.h:8290
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & object_input()
Definition: maglev-ir.h:8284
void SetValueLocationConstraints()
LoadInt32(uint64_t bitfield, int offset)
Definition: maglev-ir.h:8273
int offset() const
Definition: maglev-ir.h:8281
Definition: maglev-ir.h:9368
compiler::NameRef name() const
Definition: maglev-ir.h:9382
compiler::FeedbackSource feedback() const
Definition: maglev-ir.h:9383
Input & lookup_start_object()
Definition: maglev-ir.h:9390
Input & context()
Definition: maglev-ir.h:9388
LoadNamedFromSuperGeneric(uint64_t bitfield, compiler::NameRef name, const compiler::FeedbackSource &feedback)
Definition: maglev-ir.h:9372
void SetValueLocationConstraints()
Input & receiver()
Definition: maglev-ir.h:9389
void GenerateCode(MaglevAssembler *, const ProcessingState &)
int MaxCallStackArgs() const
Definition: maglev-ir.h:9336
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
compiler::NameRef name() const
Definition: maglev-ir.h:9349
Input & context()
Definition: maglev-ir.h:9354
Input & object_input()
Definition: maglev-ir.h:9355
int MaxCallStackArgs() const
compiler::FeedbackSource feedback() const
Definition: maglev-ir.h:9350
LoadNamedGeneric(uint64_t bitfield, compiler::NameRef name, const compiler::FeedbackSource &feedback)
Definition: maglev-ir.h:9340
Definition: maglev-ir.h:8600
LoadSignedIntDataViewElement(uint64_t bitfield, ExternalArrayType type)
Definition: maglev-ir.h:8604
ExternalArrayType type() const
Definition: maglev-ir.h:8635
auto options() const
Definition: maglev-ir.h:8633
Input & index_input()
Definition: maglev-ir.h:8622
Input & object_input()
Definition: maglev-ir.h:8621
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:8631
Input & is_little_endian_input()
Definition: maglev-ir.h:8623
void GenerateCode(MaglevAssembler *, const ProcessingState &)
bool is_little_endian_constant()
Definition: maglev-ir.h:8625
void SetValueLocationConstraints()
Definition: maglev-ir.h:8297
Input & object_input()
Definition: maglev-ir.h:8311
void SetValueLocationConstraints()
LoadTaggedFieldByFieldIndex(uint64_t bitfield)
Definition: maglev-ir.h:8301
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:8324
int MaxCallStackArgs() const
Definition: maglev-ir.h:8321
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & index_input()
Definition: maglev-ir.h:8312
Definition: maglev-ir.h:8173
LoadTaggedFieldForContextSlotNoCells(uint64_t bitfield, const int offset)
Definition: maglev-ir.h:8177
Definition: maglev-ir.h:8183
Input & context()
Definition: maglev-ir.h:8200
int MaxCallStackArgs() const
Definition: maglev-ir.h:8202
void GenerateCode(MaglevAssembler *, const ProcessingState &)
int offset() const
Definition: maglev-ir.h:8196
auto options() const
Definition: maglev-ir.h:8207
LoadTaggedFieldForContextSlot(uint64_t bitfield, const int offset)
Definition: maglev-ir.h:8187
void SetValueLocationConstraints()
Definition: maglev-ir.h:8157
LoadTaggedFieldForProperty(uint64_t bitfield, const int offset, compiler::NameRef name)
Definition: maglev-ir.h:8161
compiler::NameRef name()
Definition: maglev-ir.h:8164
auto options() const
Definition: maglev-ir.h:8166
Definition: maglev-ir.h:8148
LoadTaggedField(uint64_t bitfield, const int offset)
Definition: maglev-ir.h:8152
Definition: maglev-ir.h:7450
auto options() const
Definition: maglev-ir.h:7468
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7466
Input & receiver_input()
Definition: maglev-ir.h:7462
ElementsKind elements_kind() const
Definition: maglev-ir.h:7470
LoadTypedArrayLength(uint64_t bitfield, ElementsKind elements_kind)
Definition: maglev-ir.h:7454
Definition: maglev-ir.h:4869
Input & value()
Definition: maglev-ir.h:4878
void GenerateCode(MaglevAssembler *, const ProcessingState &)
LogicalNot(uint64_t bitfield)
Definition: maglev-ir.h:4873
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4882
void SetValueLocationConstraints()
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4876
Definition: maglev-assembler.h:96
Definition: maglev-compilation-unit.h:23
compiler::SharedFunctionInfoRef shared_function_info() const
Definition: maglev-compilation-unit.h:71
compiler::BytecodeArrayRef bytecode() const
Definition: maglev-compilation-unit.h:74
Definition: maglev-graph-labeller.h:18
Definition: maglev-ir.h:7829
MapPrototypeGetInt32Key(uint64_t bitfield)
Definition: maglev-ir.h:7833
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7846
Input & table_input()
Definition: maglev-ir.h:7841
Input & key_input()
Definition: maglev-ir.h:7842
void SetValueLocationConstraints()
Definition: maglev-ir.h:7803
Input & table_input()
Definition: maglev-ir.h:7815
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & key_input()
Definition: maglev-ir.h:7816
int MaxCallStackArgs() const
Definition: maglev-ir.h:7818
MapPrototypeGet(uint64_t bitfield)
Definition: maglev-ir.h:7807
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7825
Definition: maglev-ir.h:8405
void SetValueLocationConstraints()
Input & index_input()
Definition: maglev-ir.h:8425
Input & object_input()
Definition: maglev-ir.h:8424
MaybeGrowFastElements(uint64_t bitfield, ElementsKind elements_kind)
Definition: maglev-ir.h:8409
Input & elements_length_input()
Definition: maglev-ir.h:8426
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:8433
ElementsKind elements_kind() const
Definition: maglev-ir.h:8428
auto options() const
Definition: maglev-ir.h:8435
void GenerateCode(MaglevAssembler *, const ProcessingState &)
int MaxCallStackArgs() const
Definition: maglev-ir.h:8430
Input & elements_input()
Definition: maglev-ir.h:8423
Definition: maglev-interpreter-frame-state.h:777
Definition: maglev-ir.h:7370
MigrateMapIfNeeded(uint64_t bitfield)
Definition: maglev-ir.h:7374
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7393
int MaxCallStackArgs() const
Input & map_input()
Definition: maglev-ir.h:7388
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & object_input()
Definition: maglev-ir.h:7387
Definition: maglev-ir.h:2083
Input * last_input()
Definition: maglev-ir.h:2357
void set_properties(OpProperties properties)
Definition: maglev-ir.h:2144
void Print() const
Definition: maglev-ir.cc:461
void set_temporaries_needed(uint8_t value)
Definition: maglev-ir.h:2381
static constexpr OpProperties kProperties
Definition: maglev-ir.h:2137
void set_owner(BasicBlock *block)
Definition: maglev-ir.h:2327
constexpr auto begin()
Definition: maglev-ir.h:2193
void RequireSpecificTemporary(Register reg)
Definition: maglev-ir.h:2393
void OverwriteWithIdentityTo(ValueNode *node)
Definition: maglev-ir-inl.h:139
constexpr uint64_t bitfield() const
Definition: maglev-ir.h:2337
void change_representation(ValueRepresentation new_repr)
Definition: maglev-ir.h:2277
InputCountField::Next< bool, 1 > ReservedField
Definition: maglev-ir.h:2098
constexpr bool Is() const
Definition: maglev-ir.h:2552
RegList & general_temporaries()
Definition: maglev-ir.h:2222
const Input * last_input() const
Definition: maglev-ir.h:2358
void set_input(int index, ValueNode *node)
Definition: maglev-ir.h:2906
static constexpr int kMaxInputs
Definition: maglev-ir.h:2103
DoubleRegList & double_temporaries()
Definition: maglev-ir.h:2223
Address last_input_address() const
Definition: maglev-ir.h:2360
static constexpr Opcode opcode_of
Definition: maglev-ir.h:2107
constexpr const Input & input(int index) const
Definition: maglev-ir.h:2183
constexpr Input * input_base()
Definition: maglev-ir.h:2351
InputAllocationPolicy
Definition: maglev-ir.h:2230
constexpr bool has_inputs() const
Definition: maglev-ir.h:2173
RegListBase< RegisterT > & temporaries()
Definition: maglev-ir.h:2219
void set_id(NodeIdT id)
Definition: maglev-ir.h:2203
void assign_temporaries(RegListBase< RegisterT > list)
Definition: maglev-ir.h:2226
constexpr const T * Cast() const
Definition: maglev-ir.h:2159
void reduce_input_count(int num=1)
Definition: maglev-ir.h:2369
void InitTemporaries()
Definition: maglev-ir.h:2331
void ForAllInputsInRegallocAssignmentOrder(Function &&f)
Definition: maglev-ir.h:11852
constexpr const Input * input_base() const
Definition: maglev-ir.h:2354
void CopyEagerDeoptInfoOf(NodeBase *other, Zone *zone)
Definition: maglev-ir.h:2287
constexpr NodeIdT id() const
Definition: maglev-ir.h:2199
constexpr T * TryCast()
Definition: maglev-ir.h:2164
void ClearUnstableNodeAspects(KnownNodeAspects &)
Definition: maglev-ir.cc:8152
NodeBase(uint64_t bitfield)
Definition: maglev-ir.h:2334
void SetEagerDeoptInfo(Zone *zone, DeoptFrame deopt_frame, compiler::FeedbackSource feedback_to_update=compiler::FeedbackSource())
Definition: maglev-ir.h:2293
void change_input(int index, ValueNode *node)
Definition: maglev-ir-inl.h:113
static Derived * New(Zone *zone, std::initializer_list< ValueNode * > inputs, Args &&... args)
Definition: maglev-ir.h:2110
void ClearElementsProperties(KnownNodeAspects &)
Definition: maglev-ir.cc:8139
const RegisterSnapshot & register_snapshot() const
Definition: maglev-ir.h:2259
void set_bitfield(uint64_t new_bitfield)
Definition: maglev-ir.h:2338
constexpr int input_count() const
Definition: maglev-ir.h:2174
constexpr Input & input(int index)
Definition: maglev-ir.h:2179
void set_opcode(Opcode new_opcode)
Definition: maglev-ir.h:2283
uint8_t num_temporaries_needed() const
Definition: maglev-ir.h:2210
constexpr const T * TryCast() const
Definition: maglev-ir.h:2169
constexpr T * Cast()
Definition: maglev-ir.h:2154
void set_double_temporaries_needed(uint8_t value)
Definition: maglev-ir.h:2386
void RequireSpecificDoubleTemporary(DoubleRegister reg)
Definition: maglev-ir.h:2397
constexpr bool has_id() const
Definition: maglev-ir.h:2198
auto options() const
Definition: maglev-ir.h:2322
void set_register_snapshot(RegisterSnapshot snapshot)
Definition: maglev-ir.h:2269
void initialize_input_null(int index)
Definition: maglev-ir.h:2900
LazyDeoptInfo * lazy_deopt_info()
Definition: maglev-ir.h:2253
std::optional< int32_t > TryGetInt32ConstantInput(int index)
Definition: maglev-ir.cc:8212
constexpr Opcode opcode() const
Definition: maglev-ir.h:2140
constexpr auto end()
Definition: maglev-ir.h:2194
void OverwriteWith(Opcode new_opcode, std::optional< OpProperties > maybe_new_properties=std::nullopt)
Definition: maglev-ir.h:2307
EagerDeoptInfo * eager_deopt_info()
Definition: maglev-ir.h:2246
void OverwriteWith()
Definition: maglev-ir.h:2303
BasicBlock * owner() const
Definition: maglev-ir.h:2329
ExceptionHandlerInfo * exception_handler_info()
Definition: maglev-ir.h:2264
constexpr OpProperties properties() const
Definition: maglev-ir.h:2141
static Derived * New(Zone *zone, size_t input_count, Args &&... args)
Definition: maglev-ir.h:2130
Definition: maglev-ir.h:2933
static Derived * New(Zone *zone, std::initializer_list< ValueNode * > inputs, Args &&... args)
Definition: maglev-ir.h:2942
NodeTMixin(uint64_t bitfield, Args &&... args)
Definition: maglev-ir.h:2953
constexpr const OpProperties & properties() const
Definition: maglev-ir.h:2937
static Derived * New(Zone *zone, size_t input_count, Args &&... args)
Definition: maglev-ir.h:2947
constexpr Opcode opcode() const
Definition: maglev-ir.h:2936
Definition: maglev-ir.h:2587
ValueLocation & result()
Definition: maglev-ir.h:2925
static constexpr bool needs_epoch_check(Opcode op)
Definition: maglev-ir.h:2599
static constexpr bool participate_in_cse(Opcode op)
Definition: maglev-ir.h:2591
Definition: maglev-ir.h:5430
Input & value_input()
Definition: maglev-ir.h:5442
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:5440
void GenerateCode(MaglevAssembler *, const ProcessingState &)
int MaxCallStackArgs() const
Definition: maglev-ir.h:5444
static constexpr OpProperties kProperties
Definition: maglev-ir.h:5436
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:5447
void SetValueLocationConstraints()
NumberToString(uint64_t bitfield)
Definition: maglev-ir.h:5434
Definition: maglev-ir.h:1207
static const size_t kSize
Definition: maglev-ir.h:1416
static constexpr OpProperties TaggedValue()
Definition: maglev-ir.h:1312
constexpr bool can_allocate() const
Definition: maglev-ir.h:1237
static constexpr OpProperties ConversionNode()
Definition: maglev-ir.h:1348
constexpr bool needs_register_snapshot() const
Definition: maglev-ir.h:1256
constexpr bool is_required_when_unused() const
Definition: maglev-ir.h:1262
constexpr bool can_read() const
Definition: maglev-ir.h:1235
static constexpr OpProperties CanCallUserCode()
Definition: maglev-ir.h:1351
constexpr OpProperties(uint32_t bitfield)
Definition: maglev-ir.h:1373
static constexpr OpProperties CanThrow()
Definition: maglev-ir.h:1296
static constexpr OpProperties IntPtr()
Definition: maglev-ir.h:1336
constexpr bool can_throw() const
Definition: maglev-ir.h:1230
static constexpr OpProperties CanRead()
Definition: maglev-ir.h:1300
static constexpr OpProperties DeferredCall()
Definition: maglev-ir.h:1366
static constexpr OpProperties CanAllocate()
Definition: maglev-ir.h:1306
constexpr bool is_deopt_checkpoint() const
Definition: maglev-ir.h:1223
static constexpr OpProperties Int32()
Definition: maglev-ir.h:1320
constexpr bool can_eager_deopt() const
Definition: maglev-ir.h:1215
static constexpr OpProperties AnySideEffects()
Definition: maglev-ir.h:1363
constexpr OpProperties operator|(const OpProperties &that)
Definition: maglev-ir.h:1276
OpProperties WithNewValueRepresentation(ValueRepresentation new_repr) const
Definition: maglev-ir.h:1376
constexpr bool can_lazy_deopt() const
Definition: maglev-ir.h:1219
static constexpr OpProperties Call()
Definition: maglev-ir.h:1281
static constexpr OpProperties JSCall()
Definition: maglev-ir.h:1362
static constexpr OpProperties Uint32()
Definition: maglev-ir.h:1324
OpProperties WithoutDeopt() const
Definition: maglev-ir.h:1380
static constexpr OpProperties LazyDeopt()
Definition: maglev-ir.h:1288
static constexpr OpProperties Pure()
Definition: maglev-ir.h:1280
static constexpr OpProperties CanWrite()
Definition: maglev-ir.h:1303
constexpr bool is_any_call() const
Definition: maglev-ir.h:1214
constexpr ValueRepresentation value_representation() const
Definition: maglev-ir.h:1247
constexpr bool is_conversion() const
Definition: maglev-ir.h:1253
constexpr bool is_call() const
Definition: maglev-ir.h:1209
static constexpr OpProperties DeoptCheckpoint()
Definition: maglev-ir.h:1292
static constexpr OpProperties Float64()
Definition: maglev-ir.h:1328
static constexpr OpProperties ForValueRepresentation(ValueRepresentation repr)
Definition: maglev-ir.h:1344
constexpr bool is_deferred_call() const
Definition: maglev-ir.h:1418
constexpr bool is_pure() const
Definition: maglev-ir.h:1259
constexpr bool is_tagged() const
Definition: maglev-ir.h:1250
static constexpr OpProperties ExternalReference()
Definition: maglev-ir.h:1316
constexpr bool not_idempotent() const
Definition: maglev-ir.h:1244
static constexpr OpProperties GenericRuntimeOrBuiltinCall()
Definition: maglev-ir.h:1359
constexpr bool can_write() const
Definition: maglev-ir.h:1236
static constexpr OpProperties EagerDeopt()
Definition: maglev-ir.h:1284
static constexpr OpProperties NotIdempotent()
Definition: maglev-ir.h:1309
static constexpr OpProperties HoleyFloat64()
Definition: maglev-ir.h:1332
constexpr bool can_participate_in_cse() const
Definition: maglev-ir.h:1272
static constexpr OpProperties TrustedPointer()
Definition: maglev-ir.h:1340
constexpr bool can_deopt() const
Definition: maglev-ir.h:1227
Definition: maglev-ir.h:9852
UseRepresentationSet get_same_loop_uses_repr_hints()
Definition: maglev-ir.h:9910
NodeType type() const
Definition: maglev-ir.h:9939
NodeType type_
Definition: maglev-ir.h:9988
void merge_type(NodeType type)
Definition: maglev-ir.h:9931
Key key_
Definition: maglev-ir.h:10001
bool uses_require_31_bit_value() const
Definition: maglev-ir.h:9960
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & backedge_input()
Definition: maglev-ir.h:9869
const MergePointInterpreterFrameState * merge_state() const
Definition: maglev-ir.h:9872
void SetValueLocationConstraints()
void promote_post_loop_type()
Definition: maglev-ir.h:9924
bool is_backedge_offset(int i) const
Definition: maglev-ir.h:9883
Phi(uint64_t bitfield, MergePointInterpreterFrameState *merge_state, interpreter::Register owner)
Definition: maglev-ir.h:9859
void set_post_loop_type(NodeType type)
Definition: maglev-ir.h:9919
bool has_key() const
Definition: maglev-ir.h:9955
NodeType post_loop_type() const
Definition: maglev-ir.h:9914
void merge_post_loop_type(NodeType type)
Definition: maglev-ir.h:9915
bool is_exception_phi() const
Definition: maglev-ir.h:9880
void set_type(NodeType type)
Definition: maglev-ir.h:9935
void set_key(Key key)
Definition: maglev-ir.h:9949
UseRepresentationSet get_uses_repr_hints()
Definition: maglev-ir.h:9909
NodeType post_loop_type_
Definition: maglev-ir.h:9996
void set_uses_require_31_bit_value()
Definition: maglev-ir.h:9963
interpreter::Register owner() const
Definition: maglev-ir.h:9871
void RecordUseReprHint(UseRepresentation repr)
Definition: maglev-ir.h:9903
Key key() const
Definition: maglev-ir.h:9945
Definition: maglev-ir.h:7940
const FieldIndex field_index_
Definition: maglev-ir.h:8112
FieldIndex field_index() const
Definition: maglev-ir.h:8004
double constant_double() const
Definition: maglev-ir.h:7989
const compiler::ObjectRef constant_
Definition: maglev-ir.h:8108
static PolymorphicAccessInfo Constant(const ZoneVector< compiler::MapRef > &maps, compiler::ObjectRef constant)
Definition: maglev-ir.h:7955
static PolymorphicAccessInfo ConstantDouble(const ZoneVector< compiler::MapRef > &maps, Float64 constant)
Definition: maglev-ir.h:7960
compiler::OptionalJSObjectRef holder() const
Definition: maglev-ir.h:7999
static PolymorphicAccessInfo ModuleExport(const ZoneVector< compiler::MapRef > &maps, compiler::CellRef cell)
Definition: maglev-ir.h:7970
Representation field_representation() const
Definition: maglev-ir.h:8009
const compiler::OptionalJSObjectRef holder_
Definition: maglev-ir.h:8111
const Float64 constant_double_
Definition: maglev-ir.h:8109
Kind kind() const
Definition: maglev-ir.h:7980
static PolymorphicAccessInfo StringLength(const ZoneVector< compiler::MapRef > &maps)
Definition: maglev-ir.h:7975
DirectHandle< Cell > cell() const
Definition: maglev-ir.h:7994
struct v8::internal::maglev::PolymorphicAccessInfo::@103::@105 data_load_
static PolymorphicAccessInfo NotFound(const ZoneVector< compiler::MapRef > &maps)
Definition: maglev-ir.h:7951
DirectHandle< Object > constant() const
Definition: maglev-ir.h:7984
size_t hash_value() const
Definition: maglev-ir.h:8038
const ZoneVector< compiler::MapRef > & maps() const
Definition: maglev-ir.h:7982
bool operator==(const PolymorphicAccessInfo &other) const
Definition: maglev-ir.h:8011
Kind
Definition: maglev-ir.h:7942
@ kModuleExport
Definition: maglev-ir.h:7947
@ kConstant
Definition: maglev-ir.h:7944
@ kStringLength
Definition: maglev-ir.h:7948
@ kDataLoad
Definition: maglev-ir.h:7946
@ kNotFound
Definition: maglev-ir.h:7943
@ kConstantDouble
Definition: maglev-ir.h:7945
static PolymorphicAccessInfo DataLoad(const ZoneVector< compiler::MapRef > &maps, Representation representation, compiler::OptionalJSObjectRef holder, FieldIndex field_index)
Definition: maglev-ir.h:7964
Definition: maglev-graph-processor.h:66
Definition: maglev-ir.h:10924
int amount() const
Definition: maglev-ir.h:10940
ReduceInterruptBudgetForLoop(uint64_t bitfield, int amount)
Definition: maglev-ir.h:10928
Input & feedback_cell()
Definition: maglev-ir.h:10942
Definition: maglev-ir.h:10954
int amount() const
Definition: maglev-ir.h:10969
Input & feedback_cell()
Definition: maglev-ir.h:10971
ReduceInterruptBudgetForReturn(uint64_t bitfield, int amount)
Definition: maglev-ir.h:10958
Definition: maglev-ir.h:6517
RestLength(uint64_t bitfield, int formal_parameter_count)
Definition: maglev-ir.h:6521
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:6526
int formal_parameter_count() const
Definition: maglev-ir.h:6528
auto options() const
Definition: maglev-ir.h:6530
Definition: maglev-ir.h:11390
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:11405
Return(uint64_t bitfield)
Definition: maglev-ir.h:11394
Input & value_input()
Definition: maglev-ir.h:11401
Definition: maglev-ir.h:5624
void SetValueLocationConstraints()
RootConstant(uint64_t bitfield, RootIndex index)
Definition: maglev-ir.h:5630
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:7622
bool ToBoolean(LocalIsolate *local_isolate) const
Definition: maglev-ir.cc:353
RootIndex index() const
Definition: maglev-ir.h:5635
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Handle< Object > DoReify(LocalIsolate *isolate) const
Definition: maglev-ir.cc:921
void DoLoadToRegister(MaglevAssembler *, OutputRegister)
Definition: maglev-ir.h:9479
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & index_input()
Definition: maglev-ir.h:9492
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:9496
SeqOneByteStringAt(uint64_t bitfield)
Definition: maglev-ir.h:9483
void SetValueLocationConstraints()
Input & string_input()
Definition: maglev-ir.h:9491
Definition: maglev-ir.h:11186
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
SetContinuationPreservedEmbedderData(uint64_t bitfield)
Definition: maglev-ir.h:11190
Input & data_input()
Definition: maglev-ir.h:11196
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:11200
Definition: maglev-ir.h:9698
Input & key_input()
Definition: maglev-ir.h:9720
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:9726
int MaxCallStackArgs() const
Input & context()
Definition: maglev-ir.h:9718
SetKeyedGeneric(uint64_t bitfield, const compiler::FeedbackSource &feedback)
Definition: maglev-ir.h:9702
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & object_input()
Definition: maglev-ir.h:9719
compiler::FeedbackSource feedback() const
Definition: maglev-ir.h:9712
Input & value_input()
Definition: maglev-ir.h:9721
Definition: maglev-ir.h:9402
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & object_input()
Definition: maglev-ir.h:9423
void SetValueLocationConstraints()
Input & value_input()
Definition: maglev-ir.h:9424
int MaxCallStackArgs() const
Input & context()
Definition: maglev-ir.h:9422
compiler::FeedbackSource feedback() const
Definition: maglev-ir.h:9417
SetNamedGeneric(uint64_t bitfield, compiler::NameRef name, const compiler::FeedbackSource &feedback)
Definition: maglev-ir.h:9406
compiler::NameRef name() const
Definition: maglev-ir.h:9416
Definition: maglev-ir.h:4885
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4900
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
SetPendingMessage(uint64_t bitfield)
Definition: maglev-ir.h:4889
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4891
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4894
Input & value()
Definition: maglev-ir.h:4896
Definition: maglev-ir.h:7849
void SetValueLocationConstraints()
int MaxCallStackArgs() const
Definition: maglev-ir.h:7866
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & key_input()
Definition: maglev-ir.h:7864
Input & table_input()
Definition: maglev-ir.h:7863
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7873
SetPrototypeHas(uint64_t bitfield)
Definition: maglev-ir.h:7853
Definition: maglev-ir.h:5513
Tagged< Smi > value() const
Definition: maglev-ir.h:5522
void DoLoadToRegister(MaglevAssembler *, OutputRegister)
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:7544
bool ToBoolean(LocalIsolate *local_isolate) const
Definition: maglev-ir.h:5524
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
SmiConstant(uint64_t bitfield, Tagged< Smi > value)
Definition: maglev-ir.h:5519
DirectHandle< Object > DoReify(LocalIsolate *isolate) const
Definition: maglev-ir.cc:888
Definition: maglev-ir.h:4456
SmiCountLeadingZeros(uint64_t bitfield)
Definition: maglev-ir.h:4460
Input & input()
Definition: maglev-ir.h:4467
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4471
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4465
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4462
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:9159
int index() const
Definition: maglev-ir.h:9173
StoreContextSlotWithWriteBarrier(uint64_t bitfield, int index)
Definition: maglev-ir.h:9163
Input & new_value_input()
Definition: maglev-ir.h:9178
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
int MaxCallStackArgs() const
Input & context_input()
Definition: maglev-ir.h:9177
int offset() const
Definition: maglev-ir.h:9172
Definition: maglev-ir.h:8903
StoreDoubleDataViewElement(uint64_t bitfield, ExternalArrayType type)
Definition: maglev-ir.h:8907
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:8932
Input & object_input()
Definition: maglev-ir.h:8921
Input & value_input()
Definition: maglev-ir.h:8923
void GenerateCode(MaglevAssembler *, const ProcessingState &)
bool is_little_endian_constant()
Definition: maglev-ir.h:8926
void SetValueLocationConstraints()
Input & is_little_endian_input()
Definition: maglev-ir.h:8924
Input & index_input()
Definition: maglev-ir.h:8922
Definition: maglev-ir.h:8935
StoreDoubleField(uint64_t bitfield, int offset)
Definition: maglev-ir.h:8939
Input & object_input()
Definition: maglev-ir.h:8950
int offset() const
Definition: maglev-ir.h:8946
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
Input & value_input()
Definition: maglev-ir.h:8951
Definition: maglev-ir.h:8475
Input & elements_input()
Definition: maglev-ir.h:8491
StoreFixedArrayElementNoWriteBarrier(uint64_t bitfield)
Definition: maglev-ir.h:8479
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:8501
Input & index_input()
Definition: maglev-ir.h:8492
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & value_input()
Definition: maglev-ir.h:8493
int MaxCallStackArgs() const
Definition: maglev-ir.h:8495
Definition: maglev-ir.h:8442
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & elements_input()
Definition: maglev-ir.h:8458
Input & value_input()
Definition: maglev-ir.h:8460
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:8465
Input & index_input()
Definition: maglev-ir.h:8459
void SetValueLocationConstraints()
int MaxCallStackArgs() const
Definition: maglev-ir.h:8462
StoreFixedArrayElementWithWriteBarrier(uint64_t bitfield)
Definition: maglev-ir.h:8446
Definition: maglev-ir.h:8576
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & value_input()
Definition: maglev-ir.h:8592
Input & elements_input()
Definition: maglev-ir.h:8590
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:8596
void SetValueLocationConstraints()
StoreFixedDoubleArrayElement(uint64_t bitfield)
Definition: maglev-ir.h:8580
Input & index_input()
Definition: maglev-ir.h:8591
Definition: maglev-ir.h:8987
void GenerateCode(MaglevAssembler *, const ProcessingState &)
int offset() const
Definition: maglev-ir.h:8998
StoreFloat64(uint64_t bitfield, int offset)
Definition: maglev-ir.h:8991
Input & value_input()
Definition: maglev-ir.h:9003
void SetValueLocationConstraints()
Input & object_input()
Definition: maglev-ir.h:9002
Definition: maglev-ir.h:9279
StoreGlobal(uint64_t bitfield, compiler::NameRef name, const compiler::FeedbackSource &feedback)
Definition: maglev-ir.h:9283
void GenerateCode(MaglevAssembler *, const ProcessingState &)
compiler::FeedbackSource feedback() const
Definition: maglev-ir.h:9293
Input & context()
Definition: maglev-ir.h:9295
void SetValueLocationConstraints()
int MaxCallStackArgs() const
Input & value()
Definition: maglev-ir.h:9296
compiler::NameRef name() const
Definition: maglev-ir.h:9292
Definition: maglev-ir.h:9632
Input & name_input()
Definition: maglev-ir.h:9654
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & value_input()
Definition: maglev-ir.h:9655
void SetValueLocationConstraints()
int MaxCallStackArgs() const
Input & context()
Definition: maglev-ir.h:9652
Input & object_input()
Definition: maglev-ir.h:9653
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:9660
StoreInArrayLiteralGeneric(uint64_t bitfield, const compiler::FeedbackSource &feedback)
Definition: maglev-ir.h:9636
compiler::FeedbackSource feedback() const
Definition: maglev-ir.h:9646
Definition: maglev-ir.h:8961
Input & object_input()
Definition: maglev-ir.h:8976
void SetValueLocationConstraints()
Input & value_input()
Definition: maglev-ir.h:8977
StoreInt32(uint64_t bitfield, int offset)
Definition: maglev-ir.h:8965
void GenerateCode(MaglevAssembler *, const ProcessingState &)
int offset() const
Definition: maglev-ir.h:8972
Definition: maglev-ir.h:9078
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & object_input()
Definition: maglev-ir.h:9096
StoreMap(uint64_t bitfield, compiler::MapRef map, Kind kind)
Definition: maglev-ir.h:9087
compiler::MapRef map() const
Definition: maglev-ir.h:9098
Kind
Definition: maglev-ir.h:9082
Kind kind() const
Definition: maglev-ir.h:9099
int MaxCallStackArgs() const
void SetValueLocationConstraints()
Definition: maglev-ir.h:8862
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & object_input()
Definition: maglev-ir.h:8883
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:8894
ExternalArrayType type() const
Definition: maglev-ir.h:8896
void SetValueLocationConstraints()
StoreSignedIntDataViewElement(uint64_t bitfield, ExternalArrayType type)
Definition: maglev-ir.h:8866
Input & value_input()
Definition: maglev-ir.h:8885
bool is_little_endian_constant()
Definition: maglev-ir.h:8888
Input & is_little_endian_input()
Definition: maglev-ir.h:8886
Input & index_input()
Definition: maglev-ir.h:8884
Definition: maglev-ir.h:9024
bool initializing_or_transitioning() const
Definition: maglev-ir.h:9046
Input & value_input()
Definition: maglev-ir.h:9053
Input & object_input()
Definition: maglev-ir.h:9052
int MaxCallStackArgs() const
Definition: maglev-ir.h:9062
int offset() const
Definition: maglev-ir.h:9045
void GenerateCode(MaglevAssembler *, const ProcessingState &)
StoreTaggedFieldNoWriteBarrier(uint64_t bitfield, int offset, StoreTaggedMode store_mode)
Definition: maglev-ir.h:9028
void SetValueLocationConstraints()
Definition: maglev-ir.h:9115
Input & object_input()
Definition: maglev-ir.h:9137
bool initializing_or_transitioning() const
Definition: maglev-ir.h:9131
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & value_input()
Definition: maglev-ir.h:9138
void SetValueLocationConstraints()
int offset() const
Definition: maglev-ir.h:9130
StoreTaggedFieldWithWriteBarrier(uint64_t bitfield, int offset, StoreTaggedMode store_mode)
Definition: maglev-ir.h:9119
int MaxCallStackArgs() const
Definition: maglev-ir.h:9197
int offset() const
Definition: maglev-ir.h:9215
IndirectPointerTag tag() const
Definition: maglev-ir.h:9216
Input & object_input()
Definition: maglev-ir.h:9223
bool initializing_or_transitioning() const
Definition: maglev-ir.h:9217
void GenerateCode(MaglevAssembler *, const ProcessingState &)
StoreTrustedPointerFieldWithWriteBarrier(uint64_t bitfield, int offset, IndirectPointerTag tag, StoreTaggedMode store_mode)
Definition: maglev-ir.h:9201
int MaxCallStackArgs() const
void SetValueLocationConstraints()
Input & value_input()
Definition: maglev-ir.h:9224
Definition: maglev-ir.h:9456
int MaxCallStackArgs() const
void SetValueLocationConstraints()
StringAt(uint64_t bitfield)
Definition: maglev-ir.h:9460
Input & string_input()
Definition: maglev-ir.h:9470
Input & index_input()
Definition: maglev-ir.h:9471
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:9476
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:9519
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:9537
StringConcat(uint64_t bitfield)
Definition: maglev-ir.h:9523
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & lhs()
Definition: maglev-ir.h:9531
void SetValueLocationConstraints()
Input & rhs()
Definition: maglev-ir.h:9532
int MaxCallStackArgs() const
Definition: maglev-ir.h:9534
Definition: maglev-ir.h:4955
int MaxCallStackArgs() const
Definition: maglev-ir.h:4971
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4965
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4961
auto options() const
Definition: maglev-ir.h:4977
StringEqualInputs inputs() const
Definition: maglev-ir.h:4976
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4974
Input & rhs()
Definition: maglev-ir.h:4969
Input & lhs()
Definition: maglev-ir.h:4968
StringEqual(uint64_t bitfield, StringEqualInputs inputs)
Definition: maglev-ir.h:4959
void SetValueLocationConstraints()
Definition: maglev-ir.h:9499
void SetValueLocationConstraints()
StringLength(uint64_t bitfield)
Definition: maglev-ir.h:9503
Input & object_input()
Definition: maglev-ir.h:9511
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:9516
void GenerateCode(MaglevAssembler *, const ProcessingState &)
int MaxCallStackArgs() const
Definition: maglev-ir.h:11426
Input & value()
Definition: maglev-ir.h:11464
int value_base() const
Definition: maglev-ir.h:11449
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void set_fallthrough(BasicBlock *fallthrough)
Definition: maglev-ir.h:11459
bool has_fallthrough() const
Definition: maglev-ir.h:11453
Switch(uint64_t bitfield, int value_base, BasicBlockRef *targets, int size, BasicBlockRef *fallthrough)
Definition: maglev-ir.h:11438
Switch(uint64_t bitfield, int value_base, BasicBlockRef *targets, int size)
Definition: maglev-ir.h:11430
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:11468
BasicBlock * fallthrough() const
Definition: maglev-ir.h:11454
void SetValueLocationConstraints()
int size() const
Definition: maglev-ir.h:11451
BasicBlockRef * targets() const
Definition: maglev-ir.h:11450
Definition: maglev-ir.h:4983
Input & rhs()
Definition: maglev-ir.h:4993
TaggedEqual(uint64_t bitfield)
Definition: maglev-ir.h:4987
Input & lhs()
Definition: maglev-ir.h:4992
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:5003
void SetValueLocationConstraints()
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4989
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:5540
bool ToBoolean(LocalIsolate *local_isolate) const
Definition: maglev-ir.h:5551
DirectHandle< Object > DoReify(LocalIsolate *isolate) const
Definition: maglev-ir.cc:892
void DoLoadToRegister(MaglevAssembler *, OutputRegister)
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:7549
TaggedIndexConstant(uint64_t bitfield, Tagged< TaggedIndex > value)
Definition: maglev-ir.h:5546
void SetValueLocationConstraints()
Tagged< TaggedIndex > value() const
Definition: maglev-ir.h:5549
Definition: maglev-ir.h:5006
Input & lhs()
Definition: maglev-ir.h:5015
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:5026
Input & rhs()
Definition: maglev-ir.h:5016
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:5012
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
TaggedNotEqual(uint64_t bitfield)
Definition: maglev-ir.h:5010
Definition: maglev-ir.h:11296
TerminalControlNodeT(uint64_t bitfield)
Definition: maglev-ir.h:11300
Definition: maglev-ir.h:11289
TerminalControlNode(uint64_t bitfield)
Definition: maglev-ir.h:11291
Definition: maglev-ir.h:5029
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:5051
Input & callable()
Definition: maglev-ir.h:5045
void SetValueLocationConstraints()
static constexpr OpProperties kProperties
Definition: maglev-ir.h:5038
Input & object()
Definition: maglev-ir.h:5044
Input & context()
Definition: maglev-ir.h:5043
const compiler::FeedbackSource & feedback() const
Definition: maglev-ir.h:5046
TestInstanceOf(uint64_t bitfield, const compiler::FeedbackSource &feedback)
Definition: maglev-ir.h:5033
int MaxCallStackArgs() const
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:5039
Definition: maglev-ir.h:5080
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:5089
void SetValueLocationConstraints()
TestTypeOf(uint64_t bitfield, interpreter::TestTypeOfFlags::LiteralFlag literal)
Definition: maglev-ir.h:5084
interpreter::TestTypeOfFlags::LiteralFlag literal() const
Definition: maglev-ir.h:5099
auto options() const
Definition: maglev-ir.h:5097
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:8088
Input & value()
Definition: maglev-ir.h:5091
Definition: maglev-ir.h:5057
void SetValueLocationConstraints()
CheckType check_type() const
Definition: maglev-ir.h:5068
void GenerateCode(MaglevAssembler *, const ProcessingState &)
auto options() const
Definition: maglev-ir.h:5074
TestUndetectable(uint64_t bitfield, CheckType check_type)
Definition: maglev-ir.h:5061
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:5072
Input & value()
Definition: maglev-ir.h:5067
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:5065
Definition: maglev-ir.h:11052
int MaxCallStackArgs() const
ThrowIfNotCallable(uint64_t bitfield)
Definition: maglev-ir.h:11056
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:11068
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & value()
Definition: maglev-ir.h:11063
Definition: maglev-ir.h:11072
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & constructor()
Definition: maglev-ir.h:11083
int MaxCallStackArgs() const
void SetValueLocationConstraints()
ThrowIfNotSuperConstructor(uint64_t bitfield)
Definition: maglev-ir.h:11076
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:11089
Definition: maglev-ir.h:10983
Input & value()
Definition: maglev-ir.h:10998
compiler::NameRef name() const
Definition: maglev-ir.h:10996
int MaxCallStackArgs() const
ThrowReferenceErrorIfHole(uint64_t bitfield, const compiler::NameRef name)
Definition: maglev-ir.h:10987
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
auto options() const
Definition: maglev-ir.h:11005
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:11003
Definition: maglev-ir.h:11032
void SetValueLocationConstraints()
int MaxCallStackArgs() const
ThrowSuperAlreadyCalledIfNotHole(uint64_t bitfield)
Definition: maglev-ir.h:11036
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:11049
Input & value()
Definition: maglev-ir.h:11044
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:11012
void GenerateCode(MaglevAssembler *, const ProcessingState &)
int MaxCallStackArgs() const
Input & value()
Definition: maglev-ir.h:11023
ThrowSuperNotCalledIfHole(uint64_t bitfield)
Definition: maglev-ir.h:11016
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:11028
Definition: maglev-ir.h:4928
ToBooleanLogicalNot(uint64_t bitfield, CheckType check_type)
Definition: maglev-ir.h:4932
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4943
CheckType check_type() const
Definition: maglev-ir.h:4939
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4936
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & value()
Definition: maglev-ir.h:4938
auto options() const
Definition: maglev-ir.h:4945
Definition: maglev-ir.h:4904
void SetValueLocationConstraints()
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4919
CheckType check_type() const
Definition: maglev-ir.h:4915
ToBoolean(uint64_t bitfield, CheckType check_type)
Definition: maglev-ir.h:4908
auto options() const
Definition: maglev-ir.h:4921
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4912
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & value()
Definition: maglev-ir.h:4914
Definition: maglev-ir.h:5105
int MaxCallStackArgs() const
void GenerateCode(MaglevAssembler *, const ProcessingState &)
ToName(uint64_t bitfield)
Definition: maglev-ir.h:5109
void SetValueLocationConstraints()
static constexpr OpProperties kProperties
Definition: maglev-ir.h:5112
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:5122
Input & value_input()
Definition: maglev-ir.h:5117
Input & context()
Definition: maglev-ir.h:5116
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:5113
Definition: maglev-ir.h:5125
Input & value_input()
Definition: maglev-ir.h:5137
static constexpr OpProperties kProperties
Definition: maglev-ir.h:5132
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:5143
ToNumberOrNumeric(uint64_t bitfield, Object::Conversion mode)
Definition: maglev-ir.h:5129
Object::Conversion mode() const
Definition: maglev-ir.h:5138
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:5135
void SetValueLocationConstraints()
int MaxCallStackArgs() const
Definition: maglev-ir.h:5377
void SetValueLocationConstraints()
static constexpr OpProperties kProperties
Definition: maglev-ir.h:5385
CheckType check_type() const
Definition: maglev-ir.h:5391
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:5396
int MaxCallStackArgs() const
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:5386
void GenerateCode(MaglevAssembler *, const ProcessingState &)
ToObject(uint64_t bitfield, CheckType check_type)
Definition: maglev-ir.h:5381
Input & context()
Definition: maglev-ir.h:5389
Input & value_input()
Definition: maglev-ir.h:5390
Definition: maglev-ir.h:5402
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:5412
int MaxCallStackArgs() const
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:5424
void SetValueLocationConstraints()
ConversionMode
Definition: maglev-ir.h:5406
@ kThrowOnSymbol
Definition: maglev-ir.h:5406
@ kConvertSymbol
Definition: maglev-ir.h:5406
ConversionMode mode() const
Definition: maglev-ir.h:5417
static constexpr OpProperties kProperties
Definition: maglev-ir.h:5411
Input & context()
Definition: maglev-ir.h:5415
Input & value_input()
Definition: maglev-ir.h:5416
ToString(uint64_t bitfield, ConversionMode mode)
Definition: maglev-ir.h:5407
Definition: maglev-ir.h:7904
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:7933
TransitionAndStoreArrayElement(uint64_t bitfield, const compiler::MapRef &fast_map, const compiler::MapRef &double_map)
Definition: maglev-ir.h:7908
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
compiler::MapRef fast_map() const
Definition: maglev-ir.h:7923
int MaxCallStackArgs() const
Definition: maglev-ir.h:7926
Input & index_input()
Definition: maglev-ir.h:7920
Input & array_input()
Definition: maglev-ir.h:7919
compiler::MapRef double_map() const
Definition: maglev-ir.h:7924
Input & value_input()
Definition: maglev-ir.h:7921
Definition: maglev-ir.h:11131
void SetValueLocationConstraints()
int MaxCallStackArgs() const
const compiler::MapRef transition_target() const
Definition: maglev-ir.h:11160
TransitionElementsKindOrCheckMap(uint64_t bitfield, const ZoneVector< compiler::MapRef > &transition_sources, compiler::MapRef transition_target)
Definition: maglev-ir.h:11135
const ZoneVector< compiler::MapRef > & transition_sources() const
Definition: maglev-ir.h:11157
Input & object_input()
Definition: maglev-ir.h:11149
Input & map_input()
Definition: maglev-ir.h:11150
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:11093
const ZoneVector< compiler::MapRef > & transition_sources() const
Definition: maglev-ir.h:11118
const compiler::MapRef transition_target() const
Definition: maglev-ir.h:11121
Input & map_input()
Definition: maglev-ir.h:11111
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:11116
void SetValueLocationConstraints()
int MaxCallStackArgs() const
TransitionElementsKind(uint64_t bitfield, const ZoneVector< compiler::MapRef > &transition_sources, compiler::MapRef transition_target)
Definition: maglev-ir.h:11097
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & object_input()
Definition: maglev-ir.h:11110
Definition: maglev-ir.h:4807
void GenerateCode(MaglevAssembler *, const ProcessingState &)
TaggedToFloat64ConversionType conversion_type() const
Definition: maglev-ir.h:4826
auto options() const
Definition: maglev-ir.h:4830
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:7825
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4816
Input & input()
Definition: maglev-ir.h:4820
void SetValueLocationConstraints()
TruncateNumberOrOddballToInt32(uint64_t bitfield, TaggedToFloat64ConversionType conversion_type)
Definition: maglev-ir.h:4811
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4818
Definition: maglev-ir.h:5648
IndirectPointerTag tag() const
Definition: maglev-ir.h:5667
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:7592
bool ToBoolean(LocalIsolate *local_isolate) const
Definition: maglev-ir.h:5660
static constexpr OpProperties kProperties
Definition: maglev-ir.h:5658
void DoLoadToRegister(MaglevAssembler *, OutputRegister)
TrustedConstant(uint64_t bitfield, compiler::HeapObjectRef object, IndirectPointerTag tag)
Definition: maglev-ir.h:5654
DirectHandle< Object > DoReify(LocalIsolate *isolate) const
Definition: maglev-ir.cc:917
void GenerateCode(MaglevAssembler *, const ProcessingState &)
compiler::HeapObjectRef object() const
Definition: maglev-ir.h:5666
void SetValueLocationConstraints()
Definition: maglev-ir.h:5233
int MaxCallStackArgs() const
TryOnStackReplacement(uint64_t bitfield, int32_t loop_depth, FeedbackSlot feedback_slot, BytecodeOffset osr_offset, MaglevCompilationUnit *unit)
Definition: maglev-ir.h:5237
static constexpr OpProperties kProperties
Definition: maglev-ir.h:5247
const MaglevCompilationUnit * unit() const
Definition: maglev-ir.h:5255
Input & closure()
Definition: maglev-ir.h:5253
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:5251
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:5260
Definition: maglev-ir.h:3892
void DoLoadToRegister(MaglevAssembler *, OutputRegister)
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:7559
Uint32Constant(uint64_t bitfield, uint32_t value)
Definition: maglev-ir.h:3898
uint32_t value() const
Definition: maglev-ir.h:3903
void SetValueLocationConstraints()
bool ToBoolean(LocalIsolate *local_isolate) const
Definition: maglev-ir.h:3905
DirectHandle< Object > DoReify(LocalIsolate *isolate) const
Definition: maglev-ir.cc:900
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3901
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:4065
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4075
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4082
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4071
Uint32ToNumber(uint64_t bitfield)
Definition: maglev-ir.h:4069
void SetValueLocationConstraints()
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & input()
Definition: maglev-ir.h:4077
int MaxCallStackArgs() const
Definition: maglev-ir.h:4079
Definition: maglev-ir.h:3991
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4005
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3999
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3997
Input & input()
Definition: maglev-ir.h:4001
Uint32ToUint8Clamped(uint64_t bitfield)
Definition: maglev-ir.h:3995
void SetValueLocationConstraints()
Definition: maglev-ir.h:3071
UnaryWithFeedbackNode(uint64_t bitfield, const compiler::FeedbackSource &feedback)
Definition: maglev-ir.h:3085
static constexpr int kOperandIndex
Definition: maglev-ir.h:3080
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & operand_input()
Definition: maglev-ir.h:3081
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3091
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3078
compiler::FeedbackSource feedback() const
Definition: maglev-ir.h:3082
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3076
const compiler::FeedbackSource feedback_
Definition: maglev-ir.h:3093
void SetValueLocationConstraints()
Definition: maglev-ir.h:4679
UncheckedNumberOrOddballToFloat64(uint64_t bitfield, TaggedToFloat64ConversionType conversion_type)
Definition: maglev-ir.h:4683
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4688
auto options() const
Definition: maglev-ir.h:4703
void SetValueLocationConstraints()
Input & input()
Definition: maglev-ir.h:4693
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:7815
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4691
void GenerateCode(MaglevAssembler *, const ProcessingState &)
TaggedToFloat64ConversionType conversion_type() const
Definition: maglev-ir.h:4699
Definition: maglev-ir.h:11252
UnconditionalControlNodeT(uint64_t bitfield, BasicBlockRef *target_refs)
Definition: maglev-ir.h:11256
UnconditionalControlNodeT(uint64_t bitfield, BasicBlock *target)
Definition: maglev-ir.h:11260
Definition: maglev-ir.h:11230
void set_predecessor_id(int id)
Definition: maglev-ir.h:11234
int predecessor_id() const
Definition: maglev-ir.h:11233
UnconditionalControlNode(uint64_t bitfield, BasicBlock *target)
Definition: maglev-ir.h:11242
UnconditionalControlNode(uint64_t bitfield, BasicBlockRef *target_refs)
Definition: maglev-ir.h:11239
void set_target(BasicBlock *block)
Definition: maglev-ir.h:11236
BasicBlock * target() const
Definition: maglev-ir.h:11232
Definition: maglev-ir.h:4265
Input & input()
Definition: maglev-ir.h:4276
static constexpr OpProperties kProperties
Definition: maglev-ir.h:4271
UnsafeInt32ToUint32(uint64_t bitfield)
Definition: maglev-ir.h:4269
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:4280
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:4274
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void SetValueLocationConstraints()
Definition: maglev-ir.h:3746
UnsafeSmiTagInt32(uint64_t bitfield)
Definition: maglev-ir.h:3750
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3752
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3766
Input & input()
Definition: maglev-ir.h:3756
void SetValueLocationConstraints()
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3754
Definition: maglev-ir.h:3794
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & input()
Definition: maglev-ir.h:3804
UnsafeSmiTagIntPtr(uint64_t bitfield)
Definition: maglev-ir.h:3798
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3802
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3814
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3800
void SetValueLocationConstraints()
Definition: maglev-ir.h:3770
UnsafeSmiTagUint32(uint64_t bitfield)
Definition: maglev-ir.h:3774
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3778
Input & input()
Definition: maglev-ir.h:3780
void GenerateCode(MaglevAssembler *, const ProcessingState &)
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3776
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3790
void SetValueLocationConstraints()
Definition: maglev-ir.h:3842
static constexpr OpProperties kProperties
Definition: maglev-ir.h:3848
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:3863
void SetValueLocationConstraints()
Input & input()
Definition: maglev-ir.h:3853
void GenerateCode(MaglevAssembler *, const ProcessingState &)
UnsafeSmiUntag(uint64_t bitfield)
Definition: maglev-ir.h:3846
static constexpr Base::InputTypes kInputTypes
Definition: maglev-ir.h:3851
Definition: maglev-ir.h:9577
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Input & value_input()
Definition: maglev-ir.h:9588
int MaxCallStackArgs() const
Definition: maglev-ir.h:9590
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:9593
UnwrapStringWrapper(uint64_t bitfield)
Definition: maglev-ir.h:9581
void SetValueLocationConstraints()
Definition: maglev-ir.h:9309
UpdateJSArrayLength(uint64_t bitfield)
Definition: maglev-ir.h:9313
void GenerateCode(MaglevAssembler *, const ProcessingState &)
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.h:9333
Input & length_input()
Definition: maglev-ir.h:9327
Input & index_input()
Definition: maglev-ir.h:9329
Input & object_input()
Definition: maglev-ir.h:9328
void SetValueLocationConstraints()
Definition: maglev-ir.h:1431
Register AssignedGeneralRegister() const
Definition: maglev-ir.h:1464
bool IsDoubleRegister() const
Definition: maglev-ir.h:1476
bool IsGeneralRegister() const
Definition: maglev-ir.h:1475
const compiler::InstructionOperand & operand() const
Definition: maglev-ir.h:1478
bool IsAnyRegister() const
Definition: maglev-ir.h:1474
bool Cloberred()
Definition: maglev-ir.h:1453
void SetUnallocated(Args &&... args)
Definition: maglev-ir.h:1436
void InjectLocation(compiler::InstructionOperand location)
Definition: maglev-ir.h:1448
void SetConstant(Args &&... args)
Definition: maglev-ir.h:1459
const compiler::InstructionOperand & operand()
Definition: maglev-ir.h:1479
void SetAllocated(Args &&... args)
Definition: maglev-ir.h:1442
DoubleRegister AssignedDoubleRegister() const
Definition: maglev-ir.h:1469
Definition: maglev-ir.h:2608
ValueLocation result_
Definition: maglev-ir.h:2880
ValueLocation & result()
Definition: maglev-ir.h:2616
int use_count() const
Definition: maglev-ir.h:2619
compiler::InstructionOperand hint_
Definition: maglev-ir.h:2892
const ValueLocation & result() const
Definition: maglev-ir.h:2617
NodeIdT start_id() const
Definition: maglev-ir.h:2876
bool unused_inputs_were_visited() const
Definition: maglev-ir.h:2625
void record_next_use(NodeIdT id, InputLocation *input_location)
Definition: maglev-ir.h:2702
compiler::InstructionOperand loadable_slot() const
Definition: maglev-ir.h:2696
constexpr ValueRepresentation value_representation() const
Definition: maglev-ir.h:2763
bool is_loadable() const
Definition: maglev-ir.h:2657
bool has_register() const
Definition: maglev-ir.h:2818
LiveRange live_range() const
Definition: maglev-ir.h:2719
void AddRegister(DoubleRegister reg)
Definition: maglev-ir.h:2795
int FirstRegisterCode() const
Definition: maglev-ir.h:2868
NodeIdT current_next_use() const
Definition: maglev-ir.h:2720
compiler::AllocatedOperand spill_slot() const
Definition: maglev-ir.h:2691
void LoadToRegister(MaglevAssembler *, DoubleRegister)
void SetNoSpill()
Definition: maglev-ir.cc:485
RegList registers_with_result_
Definition: maglev-ir.h:2882
constexpr bool is_tagged() const
Definition: maglev-ir.h:2732
ValueNode(uint64_t bitfield)
Definition: maglev-ir.h:2855
bool has_valid_live_range() const
Definition: maglev-ir.h:2718
void advance_next_use(NodeIdT use)
Definition: maglev-ir.h:2724
bool is_spilled() const
Definition: maglev-ir.h:2662
void AddRegister(Register reg)
Definition: maglev-ir.h:2791
void Spill(compiler::AllocatedOperand operand)
Definition: maglev-ir.h:2677
DirectHandle< Object > Reify(LocalIsolate *isolate) const
Definition: maglev-ir.cc:872
bool has_no_more_uses() const
Definition: maglev-ir.h:2726
void LoadToRegister(MaglevAssembler *, Register)
bool has_hint()
Definition: maglev-ir.h:2643
int use_count_
Definition: maglev-ir.h:2894
NodeIdT end_id_
Definition: maglev-ir.h:2878
bool is_used() const
Definition: maglev-ir.h:2624
void InitializeRegisterData()
Definition: maglev-ir.h:2783
RegListBase< T > result_registers()
Definition: maglev-ir.h:2834
int num_registers() const
Definition: maglev-ir.h:2812
compiler::InstructionOperand spill_
Definition: maglev-ir.h:2890
void ClearHint()
Definition: maglev-ir.h:2641
RegListBase< T > ClearRegisters()
constexpr bool decompresses_tagged_result() const
Definition: maglev-ir.h:2760
NodeIdT * last_uses_next_use_id_
Definition: maglev-ir.h:2889
void RemoveRegister(Register reg)
Definition: maglev-ir.h:2800
void DoLoadToRegister(MaglevAssembler *, Register)
compiler::InstructionOperand allocation() const
Definition: maglev-ir.h:2844
void mark_unused_inputs_visited()
Definition: maglev-ir.h:2634
void remove_use()
Definition: maglev-ir-inl.h:128
RegisterT GetRegisterHint()
Definition: maglev-ir.h:2646
void SetConstantLocation()
Definition: maglev-ir.cc:493
void SetHint(compiler::InstructionOperand hint)
Definition: maglev-ir.cc:467
constexpr bool use_double_register() const
Definition: maglev-ir.h:2728
constexpr MachineRepresentation GetMachineRepresentation() const
Definition: maglev-ir.h:2767
bool is_in_register(DoubleRegister reg) const
Definition: maglev-ir.h:2828
void DoLoadToRegister(MaglevAssembler *, DoubleRegister)
void add_use()
Definition: maglev-ir.h:2626
const compiler::InstructionOperand & hint() const
Definition: maglev-ir.h:2652
NodeIdT next_use_
Definition: maglev-ir.h:2879
DoubleRegList double_registers_with_result_
Definition: maglev-ir.h:2883
bool is_in_register(Register reg) const
Definition: maglev-ir.h:2824
void RemoveRegister(DoubleRegister reg)
Definition: maglev-ir.h:2804
Definition: maglev-ir.h:6175
bool operator==(const Iterator &other) const
Definition: maglev-ir.h:6183
VirtualObject *& operator*()
Definition: maglev-ir.h:6189
VirtualObject * operator->()
Definition: maglev-ir.h:6190
Iterator(VirtualObject *entry)
Definition: maglev-ir.h:6177
Iterator & operator++()
Definition: maglev-ir.h:6179
bool operator!=(const Iterator &other) const
Definition: maglev-ir.h:6186
Definition: maglev-ir.h:6171
Iterator end() const
Definition: maglev-ir.h:6264
VirtualObjectList()
Definition: maglev-ir.h:6173
void Add(VirtualObject *object)
Definition: maglev-ir.h:6200
void Print(std::ostream &os, const char *prefix, MaglevGraphLabeller *labeller) const
Definition: maglev-ir.cc:330
VirtualObject * FindAllocatedWith(const InlinedAllocation *allocation) const
Definition: maglev-ir.h:6209
bool IsSnapshot() const
Definition: maglev-ir.h:6256
Iterator begin() const
Definition: maglev-ir.h:6263
static VirtualObject * WalkUntilCommon(const VirtualObjectList &list1, const VirtualObjectList &list2, Function &&f)
Definition: maglev-ir.h:6225
bool operator==(const VirtualObjectList &other) const
Definition: maglev-ir.h:6196
void Snapshot() const
Definition: maglev-ir.h:6244
bool is_empty() const
Definition: maglev-ir.h:6207
Definition: maglev-ir.h:5820
void ForEachNestedRuntimeInput(VirtualObjectList virtual_objects, Function &&f)
Definition: maglev-ir.h:6383
constexpr bool has_static_map() const
Definition: maglev-ir.h:5902
void set(uint32_t offset, ValueNode *value)
Definition: maglev-ir.h:5956
ValueNode * string_length() const
Definition: maglev-ir.h:5968
void ForEachInput(Function &&callback)
Definition: maglev-ir.h:6016
void Snapshot()
Definition: maglev-ir.h:6013
compiler::FixedDoubleArrayRef double_elements() const
Definition: maglev-ir.h:5943
size_t size() const
Definition: maglev-ir.h:5920
VirtualObject(uint64_t bitfield, compiler::MapRef map, int id, uint32_t length, compiler::FixedDoubleArrayRef elements)
Definition: maglev-ir.h:5887
void GenerateCode(MaglevAssembler *, const ProcessingState &)
Definition: maglev-ir.h:5899
void ClearSlots(int last_init_slot, ValueNode *clear_value)
Definition: maglev-ir.h:5978
ObjectFields slots_
Definition: maglev-ir.h:6162
void SetValueLocationConstraints()
Definition: maglev-ir.h:5898
VirtualObject(uint64_t bitfield, compiler::MapRef map, int id, Float64 number)
Definition: maglev-ir.h:5877
bool IsSnapshot() const
Definition: maglev-ir.h:6012
void set_allocation(InlinedAllocation *allocation)
Definition: maglev-ir.h:5987
Type
Definition: maglev-ir.h:5824
@ kHeapNumber
Definition: maglev-ir.h:5826
@ kDefault
Definition: maglev-ir.h:5825
@ kLast
Definition: maglev-ir.h:5830
@ kConsString
Definition: maglev-ir.h:5828
@ kFixedDoubleArray
Definition: maglev-ir.h:5827
void ForEachInput(Function &&callback) const
Definition: maglev-ir.h:6036
ValueNode * get(uint32_t offset) const
Definition: maglev-ir.h:5948
Type type() const
Definition: maglev-ir.h:5917
std::optional< VirtualObject * > Merge(const VirtualObject *other, uint32_t new_object_id, Zone *zone, Function MergeValue) const
Definition: maglev-ir.h:6065
uint32_t double_elements_length() const
Definition: maglev-ir.h:5938
const VirtualConsString & cons_string() const
Definition: maglev-ir.h:5973
VirtualObject(uint64_t bitfield, compiler::MapRef map, int id, uint32_t slot_count, ValueNode **slots)
Definition: maglev-ir.h:5867
uint32_t slot_count() const
Definition: maglev-ir.h:6125
uint32_t id() const
Definition: maglev-ir.h:5918
InlinedAllocation * allocation() const
Definition: maglev-ir.h:5986
DoubleArray double_array_
Definition: maglev-ir.h:6161
Float64 number_
Definition: maglev-ir.h:6160
compiler::MapRef map() const
Definition: maglev-ir.h:5913
void PrintParams(std::ostream &, MaglevGraphLabeller *) const
Definition: maglev-ir.cc:7662
VirtualConsString cons_string_
Definition: maglev-ir.h:6163
VirtualObject(uint64_t bitfield, int id, const VirtualConsString &cons_string)
Definition: maglev-ir.h:5861
bool compatible_for_merge(const VirtualObject *other) const
Definition: maglev-ir.h:5991
friend std::ostream & operator<<(std::ostream &out, Type type)
Definition: maglev-ir.h:5833
Float64 number() const
Definition: maglev-ir.h:5933
VirtualObject * Clone(uint32_t new_object_id, Zone *zone, bool empty_clone=false) const
Definition: maglev-ir.h:6091
Definition: maglev-ir.h:2964
constexpr ArrayWrapper(Args &&... args)
Definition: maglev-ir.h:2967
Handle< SharedFunctionInfo > key_
Definition: compilation-cache-table.cc:185
JSRegExp::Flags flags_
Definition: compilation-cache-table.cc:173
uint32_t count
Definition: debug-coverage.cc:600
int end
Definition: debug-coverage.cc:602
base::Vector< const DirectHandle< Object > > args
Definition: execution.cc:74
DirectHandle< Object > new_target
Definition: execution.cc:75
int pc
Definition: experimental-interpreter.cc:554
other heap size generate builtins concurrently on separate threads in mksnapshot track concurrent recompilation artificial compilation delay in ms max number of threads that concurrent Turbofan can use(0 for unbounded)") DEFINE_BOOL( stress_concurrent_inlining
refactor address components for immediate indexing make OptimizeMaglevOnNextCall optimize to turbofan instead of maglev filter for tracing turbofan compilation nullptr
Definition: flag-definitions.h:1280
too high values may cause the compiler to set high thresholds for inlining to as much as possible avoid inlined allocation of objects that cannot escape trace load stores from virtual maglev objects use TurboFan fast string builder analyze liveness of environment slots and zap dead values trace TurboFan load elimination emit data about basic block usage in builtins to this enable builtin reordering when run mksnapshot flag for emit warnings when applying builtin profile data verify register allocation in TurboFan randomly schedule instructions to stress dependency tracking enable store store elimination in TurboFan rewrite far to near simulate GC compiler thread race related to allow float parameters to be passed in simulator mode JS Wasm Run additional turbo_optimize_inlined_js_wasm_wrappers enables Turboshaft s StaticAssert and CheckTurboshaftTypeOf operations Wasm code into JS functions via the JS to Wasm wrappers are still inlined in TurboFan For controlling whether to at see turbo inline js wasm calls enable Turboshaft s loop unrolling enable an additional Turboshaft phase that performs optimizations based on type information enable Turbolev features that we want to ship in the not too far future trace individual Turboshaft reduction steps trace intermediate Turboshaft reduction steps trace Turboshaft s if else to switch reducer invocation count threshold for early optimization Enables optimizations which favor memory size over execution speed Enables sampling allocation profiler with X as a sample interval min size of a semi the new space consists of two semi spaces max size of the preconfigured old space Collect garbage after Collect garbage after keeps maps alive for< n > old space garbage collections print one detailed trace line in allocation gc speed threshold for starting incremental marking via a task in percent of available threshold for starting incremental marking immediately in percent of available Use a single schedule for determining a marking schedule between JS and C objects schedules the minor GC task with kUserVisible priority max worker number of concurrent for NumberOfWorkerThreads start background threads that allocate memory concurrent_array_buffer_sweeping use parallel threads to clear weak refs in the atomic pause trace progress of the incremental marking trace object counts and memory usage report a tick only when allocated zone memory changes by this amount TracingFlags::gc_stats TracingFlags::gc_stats track native contexts that are expected to be garbage collected verify heap pointers before and after GC memory reducer runs GC with ReduceMemoryFootprint flag Maximum number of memory reducer GCs scheduled Old gen GC speed is computed directly from gc tracer counters Perform compaction on full GCs based on V8 s default heuristics Perform compaction on every full GC Perform code space compaction when finalizing a full GC with stack Stress GC compaction to flush out bugs with moving objects flush of baseline code when it has not been executed recently Use time base code flushing instead of age Use a progress bar to scan large objects in increments when incremental marking is active force incremental marking for small heaps and run it more often Release pooled large pages after X seconds prints number of allocations and enables analysis mode for gc fuzz e g stress stress scavenge force scavenge at random points between and reclaim otherwise unreachable unmodified wrapper objects when possible discard the memory pool before invoking the GC on memory pressure or last resort GCs Delay before memory reducer start virtual randomize memory reservations by ignoring any hints passed when allocating pages use incremental marking for CppHeap cppheap_concurrent_marking c value for membalancer A special constant to balance between memory and space tradeoff The smaller the more memory it uses enable use of SSE4 instructions if available enable use of SAHF instruction if enable use of AVX VNNI instructions if available enable use of POPCNT instruction if available force all emitted branches to be in long mode(MIPS/PPC only)") DEFINE_BOOL(partial_constant_pool
other heap size flags(e.g. initial_heap_size) take precedence") DEFINE_SIZE_T( max_shared_heap_size
Isolate * isolate
Definition: graph-builder.cc:67
JSHeapBroker * broker
Definition: graph-builder.cc:68
const ClassType * type_
Definition: implementation-visitor.cc:3838
OptionalOpIndex index
Definition: instruction-selector-ia32.cc:65
int32_t offset
Definition: instruction-selector-ia32.cc:66
TNode< Context > context
Definition: js-call-reducer.cc:1589
TNode< Object > target
Definition: js-call-reducer.cc:1590
TNode< Object > receiver
Definition: js-call-reducer.cc:1592
TNode< Object > callback
Definition: js-call-reducer.cc:1593
Node * node
Definition: js-inlining-heuristic.cc:381
RpoNumber block
Definition: jump-threading.cc:62
ZoneVector< RpoNumber > & result
Definition: jump-threading.cc:21
Builtin builtin
Definition: liftoff-compiler.cc:539
LiftoffRegister reg
Definition: liftoff-compiler.cc:521
LiftoffAssembler::CacheState state
Definition: liftoff-compiler.cc:462
ZoneVector< int > slots
Definition: liftoff-compiler.cc:530
FunctionLiteral * literal
Definition: liveedit.cc:294
Node * condition
Definition: machine-operator-reducer.cc:2792
#define DEF_OPCODE_OF(Name)
Definition: maglev-ir.h:2046
#define DEF_FORWARD_DECLARATION(type,...)
Definition: maglev-ir.h:1091
#define CONDITIONAL_CONTROL_NODE_LIST(V)
Definition: maglev-ir.h:426
#define DEOPTIMIZE_REASON_FIELD
Definition: maglev-ir.h:2070
#define DEF_INT32_UNARY_WITH_OVERFLOW_NODE(Name)
Definition: maglev-ir.h:3252
#define NODE_BASE_LIST(V)
Definition: maglev-ir.h:445
#define NODE_TYPE_LIST(V)
Definition: maglev-ir.h:701
#define STORE_TYPED_ARRAY(name, properties, type,...)
Definition: maglev-ir.h:8773
#define DEF_BINARY_WITH_FEEDBACK_NODE(Name)
Definition: maglev-ir.h:3139
#define LEAF_NODE_TYPE_LIST(V)
Definition: maglev-ir.h:637
#define LOAD_TYPED_ARRAY(name, properties,...)
Definition: maglev-ir.h:8677
#define ADD_STATIC_ASSERT(Name, Value)
Definition: maglev-ir.h:836
#define GAP_MOVE_NODE_LIST(V)
Definition: maglev-ir.h:333
#define NODE_LIST(V)
Definition: maglev-ir.h:405
#define DEF_UNARY_WITH_FEEDBACK_NODE(Name)
Definition: maglev-ir.h:3137
#define STORE_CONSTANT_TYPED_ARRAY(name, properties, type,...)
Definition: maglev-ir.h:8814
#define BRANCH_CONTROL_NODE_LIST(V)
Definition: maglev-ir.h:409
#define PLUS_ONE(type)
Definition: maglev-ir.h:453
#define VALUE_NODE_LIST(V)
Definition: maglev-ir.h:170
#define CONTROL_NODE_LIST(V)
Definition: maglev-ir.h:440
#define UNCONDITIONAL_CONTROL_NODE_LIST(V)
Definition: maglev-ir.h:430
#define DEF_FLOAT64_BINARY_NODE_WITH_CALL(Name)
Definition: maglev-ir.h:3451
#define IEEE_754_UNARY_LIST(V)
Definition: maglev-ir.h:3542
#define DEF_OPCODES(type)
Definition: maglev-ir.h:450
#define DEFINE_NODE_TYPE_CHECK(Type, _)
Definition: maglev-ir.h:995
#define DEF_FLOAT64_BINARY_NODE(Name)
Definition: maglev-ir.h:3449
#define DEF_INT32_BINARY_WITH_OVERFLOW_NODE(Name)
Definition: maglev-ir.h:3180
#define COUNT(...)
Definition: maglev-ir.h:674
#define TERMINAL_CONTROL_NODE_LIST(V)
Definition: maglev-ir.h:435
#define LOAD_CONSTANT_TYPED_ARRAY(name, properties,...)
#define ASSERT_CONDITION(V)
Definition: maglev-ir.h:6740
#define DEF_INT32_BINARY_NODE(Name)
Definition: maglev-ir.h:3208
#define CONSTANT_VALUE_NODE_LIST(V)
Definition: maglev-ir.h:145
InstructionOperand source
Definition: move-optimizer.cc:16
int n
Definition: mul-fft.cc:296
Definition: hashing.h:364
unsigned short uint16_t
Definition: unicode.cc:41
int int32_t
Definition: unicode.cc:42
constexpr unsigned CountTrailingZerosNonZero(T value) requires(std
Definition: bits.h:173
constexpr int ClearLsb(T value) requires std
Definition: bits.h:295
V8_INLINE size_t hash_combine(size_t seed, size_t hash)
Definition: hashing.h:77
auto make_iterator_range(ForwardIterator begin, ForwardIterator end)
Definition: iterator.h:65
V8_INLINE size_t hash_value(unsigned long v)
Definition: hashing.h:209
T Divide(T x, T y)
Definition: overflowing-math.h:69
void Add(RWDigits Z, Digits X, Digits Y)
Definition: vector-arithmetic.cc:41
void Subtract(RWDigits Z, Digits X, Digits Y)
Definition: vector-arithmetic.cc:59
void Register()
Definition: etw-jit-win.cc:187
constexpr size_t input_count()
Definition: operations.h:9503
FloatWithBits< 64 > Float64
Definition: index.h:240
CanThrow
Definition: compiler/globals.h:26
@ kSmi
Definition: heap-refs.cc:63
Node::Uses::const_iterator begin(const Node::Uses &uses)
Definition: node.h:708
constexpr T * ObjectPtrBeforeAddress(void *address)
Definition: maglev-ir.h:2055
UINT32_ELEMENTS INT32_ELEMENTS FLOAT32_ELEMENTS
Definition: maglev-ir.h:8768
UseRepresentation
Definition: maglev-ir.h:9819
constexpr bool IsControlNode(Opcode opcode)
Definition: maglev-ir.h:545
std::underlying_type_t< NodeType > NodeTypeInt
Definition: maglev-ir.h:710
UINT8_CLAMPED_ELEMENTS
Definition: maglev-ir.h:8714
constexpr Condition ConditionForNaN()
Definition: maglev-assembler-arm-inl.h:25
NodeType StaticTypeForConstant(compiler::JSHeapBroker *broker, compiler::ObjectRef ref)
Definition: maglev-ir.h:879
requires(FloatType==ValueRepresentation::kFloat64||FloatType==ValueRepresentation::kHoleyFloat64) void CheckedNumberOrOddballToFloat64OrHoleyFloat64< Derived
HoleyFloat64
Definition: maglev-ir.h:4572
StringEqualInputs
Definition: maglev-ir.h:4954
AssertCondition
Definition: maglev-ir.h:6752
bool HasOnlyStringMaps(base::Vector< const compiler::MapRef > maps)
Definition: maglev-ir.h:1070
base::EnumSet< UseRepresentation, int8_t > UseRepresentationSet
Definition: maglev-ir.h:9847
Opcode
Definition: maglev-ir.h:451
base::EnumSet< ValueRepresentation, int8_t > ValueRepresentationSet
Definition: maglev-ir.h:9846
bool IsInstanceOfLeafNodeType(compiler::MapRef map, NodeType type, compiler::JSHeapBroker *broker)
Definition: maglev-ir.h:893
constexpr Condition ConditionFor(Operation operation)
Definition: maglev-assembler.h:1114
constexpr NodeType EmptyNodeType()
Definition: maglev-ir.h:729
ValueRepresentation
Definition: maglev-ir.h:610
constexpr bool IsTerminalControlNode(Opcode opcode)
Definition: maglev-ir.h:560
constexpr NodeType UnionType(NodeType left, NodeType right)
Definition: maglev-ir.h:737
FixedInputNodeTMixin< InputCount, ValueNodeT< Derived >, Derived > FixedInputValueNodeT
Definition: maglev-ir.h:3045
UINT32_ELEMENTS INT8_ELEMENTS
Definition: maglev-ir.h:8759
bool HasOnlyNumberMaps(base::Vector< const compiler::MapRef > maps)
Definition: maglev-ir.h:1077
constexpr bool NodeTypeIs(NodeType type, NodeType to_check)
Definition: maglev-ir.h:743
constexpr bool IsZeroCostNode(Opcode opcode)
Definition: maglev-ir.h:532
constexpr bool IsEmptyNodeType(NodeType type)
Definition: maglev-ir.h:874
bool HasOnlyJSTypedArrayMaps(base::Vector< const compiler::MapRef > maps)
Definition: maglev-ir.h:1049
constexpr OpProperties StaticPropertiesForOpcode(Opcode opcode)
Definition: maglev-ir.h:11841
constexpr NodeType IntersectType(NodeType left, NodeType right)
Definition: maglev-ir.h:731
constexpr bool NodeTypeIsUnstable(NodeType type)
Definition: maglev-ir.h:756
const char * OpcodeToString(Opcode opcode)
Definition: maglev-ir.cc:52
bool IsInitializingOrTransitioning(StoreTaggedMode mode)
Definition: maglev-ir.h:9018
constexpr NodeType MakeTypeStable(NodeType type)
Definition: maglev-ir.h:797
constexpr bool IsConstantNode(Opcode opcode)
Definition: maglev-ir.h:510
UINT8_ELEMENTS
Definition: maglev-ir.h:8714
UINT32_ELEMENTS INT16_ELEMENTS
Definition: maglev-ir.h:8759
void CheckValueInputIs(const NodeBase *node, int i, ValueRepresentation expected, MaglevGraphLabeller *graph_labeller)
Definition: maglev-ir.cc:533
constexpr bool IsZeroExtendedRepresentation(ValueRepresentation repr)
Definition: maglev-ir.h:624
uint32_t NodeIdT
Definition: maglev-ir.h:1095
EscapeAnalysisResult
Definition: maglev-ir.h:6270
constexpr bool IsValueNode(Opcode opcode)
Definition: maglev-ir.h:507
DEFINE_TRUNCATE_NODE(TruncateFloat64ToInt32, HoleyFloat64, OpProperties::Int32()) DEFINE_TRUNCATE_NODE(UnsafeTruncateFloat64ToInt32
NodeType StaticTypeForNode(compiler::JSHeapBroker *broker, LocalIsolate *isolate, ValueNode *node)
Definition: maglev-graph-builder.cc:4521
StoreTaggedMode
Definition: maglev-ir.h:9013
constexpr bool IsCommutativeNode(Opcode opcode)
Definition: maglev-ir.h:514
bool IsInstanceOfNodeType(compiler::MapRef map, NodeType type, compiler::JSHeapBroker *broker)
Definition: maglev-ir.h:946
bool FromConstantToBool(LocalIsolate *local_isolate, ValueNode *node)
Definition: maglev-ir.cc:365
constexpr bool IsConditionalControlNode(Opcode opcode)
Definition: maglev-ir.h:552
std::ostream & operator<<(std::ostream &os, const PrintNode &printer)
Definition: maglev-graph-printer.h:144
NodeType
Definition: maglev-ir.h:705
DEFINE_NODE_TYPE(Name, Value)
constexpr bool IsDoubleRepresentation(ValueRepresentation repr)
Definition: maglev-ir.h:619
constexpr bool IsSimpleFieldStore(Opcode opcode)
Definition: maglev-ir.h:566
NodeType StaticTypeForMap(compiler::MapRef map, compiler::JSHeapBroker *broker)
Definition: maglev-ir.h:842
constexpr bool CanBeStoreToNonEscapedObject(Opcode opcode)
Definition: maglev-ir.h:586
constexpr bool IsTypedArrayStore(Opcode opcode)
Definition: maglev-ir.h:581
TaggedToFloat64ConversionType
Definition: maglev-ir.h:1007
constexpr bool NodeTypeIsNeverStandalone(NodeType type)
Definition: maglev-ir.h:714
bool HasNumberMap(base::Vector< const compiler::MapRef > maps)
Definition: maglev-ir.h:1084
bool NodeTypeMayBeNullOrUndefined(NodeType type)
Definition: maglev-ir.h:1002
UINT16_ELEMENTS
Definition: maglev-ir.h:8714
CheckType
Definition: maglev-ir.h:4903
constexpr bool IsBranchControlNode(Opcode opcode)
Definition: maglev-ir.h:548
bool HasOnlyJSArrayMaps(base::Vector< const compiler::MapRef > maps)
Definition: maglev-ir.h:1056
constexpr bool NodeTypeCanBe(NodeType type, NodeType to_check)
Definition: maglev-ir.h:749
constexpr bool IsUnconditionalControlNode(Opcode opcode)
Definition: maglev-ir.h:556
constexpr bool IsGapMoveNode(Opcode opcode)
Definition: maglev-ir.h:542
bool HasOnlyJSObjectMaps(base::Vector< const compiler::MapRef > maps)
Definition: maglev-ir.h:1063
constexpr bool IsElementsArrayWrite(Opcode opcode)
Definition: maglev-ir.h:577
void Store(LiftoffAssembler *assm, LiftoffRegister src, MemOperand dst, ValueKind kind)
Definition: liftoff-assembler-arm-inl.h:279
constexpr Condition Negate(Condition cond)
Definition: liftoff-assembler.h:30
typedef void(VECTORCALL PWasmOp)(const uint8_t *code
Definition: api-arguments-inl.h:20
constexpr Register no_reg
Definition: register-arm.h:92
int index
Definition: heap-snapshot-generator.cc:1698
constexpr int kTaggedSize
Definition: common/globals.h:533
@ kNotFound
Definition: common/globals.h:1731
DwVfpRegister DoubleRegister
Definition: register-arm.h:192
CreateArgumentsType
Definition: common/globals.h:1882
Condition
Definition: constants-arm.h:82
@ NONE
Definition: property-details.h:19
IndirectPointerTag
Definition: indirect-pointer-tag.h:110
DeoptimizeReason
Definition: deoptimize-reason.h:109
ScopeType
Definition: common/globals.h:1908
Tagged(T object) -> Tagged< T >
internal
Definition: wasm-objects-inl.h:453
RegListBase< Register > RegList
Definition: reglist-arm.h:14
Opcode
Definition: constants-loong64.h:234
ElementsKind
Definition: elements-kind.h:105
AllocationType
Definition: common/globals.h:1378
int32_t key
Definition: external-reference.cc:1399
AbortReason
Definition: bailout-reason.h:157
RegListBase< DoubleRegister > DoubleRegList
Definition: reglist-arm.h:15
InstanceType
Definition: instance-type.h:116
else if(instr->arch_opcode()==kRiscvCmpZero)
Definition: code-generator-riscv.cc:4230
DCHECK(IsNull(value)||IsNativeContext(value)||value==Smi::uninitialized_deserialization_value())
TypeofMode
Definition: common/globals.h:794
uintptr_t Address
Definition: memcopy.h:22
ConvertReceiverMode
Definition: common/globals.h:1849
ExternalArrayType
Definition: common/globals.h:2464
@ kExternalFloat64Array
Definition: common/globals.h:2473
@ kExternalInt32Array
Definition: common/globals.h:2469
@ kExternalInt8Array
Definition: common/globals.h:2465
@ kExternalInt16Array
Definition: common/globals.h:2467
MachineRepresentation
Definition: machine-type.h:19
return value
Definition: map-inl.h:912
ObjectFields
Definition: map.h:145
Builtin
Definition: builtins.h:49
constexpr int kMaxInt
Definition: common/globals.h:375
RootIndex
Definition: roots.h:498
kInstanceDescriptorsOffset kTransitionsOrPrototypeInfoOffset prototype
Definition: map-inl.h:69
constexpr int MB
Definition: v8-internal.h:56
size_t length
Definition: external-reference.cc:1499
constexpr bool PointerCompressionIsEnabled()
Definition: v8-internal.h:192
!IsContextMap !IsContextMap native_context
Definition: map-inl.h:896
LanguageMode
Definition: common/globals.h:743
Definition: api-arguments-inl.h:19
#define UNARY_OPERATION_LIST(V)
Definition: operation.h:24
std::ostream & operator<<(std::ostream &os, const Operation &operation)
Definition: operation.h:49
#define ARITHMETIC_OPERATION_LIST(V)
Definition: operation.h:10
#define COMPARISON_OPERATION_LIST(V)
Definition: operation.h:30
uint32_t cast
Definition: random-module-generation.cc:55
int size
Definition: setup-heap-internal.cc:131
#define UNREACHABLE()
Definition: src/base/logging.h:67
#define DCHECK_LE(v1, v2)
Definition: src/base/logging.h:489
#define DCHECK_NULL(val)
Definition: src/base/logging.h:490
#define CHECK(condition)
Definition: src/base/logging.h:124
#define DCHECK_NOT_NULL(val)
Definition: src/base/logging.h:491
#define DCHECK_IMPLIES(v1, v2)
Definition: src/base/logging.h:492
#define DCHECK_NE(v1, v2)
Definition: src/base/logging.h:485
#define DCHECK_GE(v1, v2)
Definition: src/base/logging.h:487
#define CHECK_EQ(lhs, rhs)
#define DCHECK(condition)
Definition: src/base/logging.h:481
#define DCHECK_LT(v1, v2)
Definition: src/base/logging.h:488
#define DCHECK_EQ(v1, v2)
Definition: src/base/logging.h:484
#define DCHECK_GT(v1, v2)
Definition: src/base/logging.h:486
#define USE(...)
Definition: src/base/macros.h:293
constexpr bool IsAligned(T value, U alignment)
Definition: src/base/macros.h:403
Definition: threaded-list.h:17
Definition: feedback-source.h:15
Definition: operations.h:925
Definition: v8-fast-api-calls.h:511
Definition: maglev-ir.h:1542
const base::Vector< ValueNode * > parameters
Definition: maglev-ir.h:1544
const Builtin builtin_id
Definition: maglev-ir.h:1543
compiler::OptionalJSFunctionRef maybe_js_target
Definition: maglev-ir.h:1546
ValueNode * context
Definition: maglev-ir.h:1545
Definition: maglev-ir.h:1535
const MaglevCompilationUnit & unit
Definition: maglev-ir.h:1536
ValueNode * context
Definition: maglev-ir.h:1539
ValueNode * receiver
Definition: maglev-ir.h:1538
const SourcePosition source_position
Definition: maglev-ir.h:1537
Definition: maglev-ir.h:1528
const base::Vector< ValueNode * > arguments
Definition: maglev-ir.h:1532
ValueNode * closure
Definition: maglev-ir.h:1531
const BytecodeOffset bytecode_position
Definition: maglev-ir.h:1530
const MaglevCompilationUnit & unit
Definition: maglev-ir.h:1529
Definition: maglev-ir.h:1520
const BytecodeOffset bytecode_position
Definition: maglev-ir.h:1524
const MaglevCompilationUnit & unit
Definition: maglev-ir.h:1521
const CompactInterpreterFrameState * frame_state
Definition: maglev-ir.h:1522
ValueNode * closure
Definition: maglev-ir.h:1523
const SourcePosition source_position
Definition: maglev-ir.h:1525
Definition: maglev-interpreter-frame-state.h:268
Definition: maglev-ir.h:1861
RegList live_registers
Definition: maglev-ir.h:1862
RegList live_tagged_registers
Definition: maglev-ir.h:1863
DoubleRegList live_double_registers
Definition: maglev-ir.h:1864
Definition: maglev-ir.h:2713
NodeIdT end
Definition: maglev-ir.h:2715
NodeIdT start
Definition: maglev-ir.h:2714
Definition: maglev-ir.h:5851
ValueNode * length
Definition: maglev-ir.h:5857
ValueNode * second() const
Definition: maglev-ir.h:5853
std::array< ValueNode *, 2 > data
Definition: maglev-ir.h:5858
ValueNode * map
Definition: maglev-ir.h:5856
ValueNode * first() const
Definition: maglev-ir.h:5852
Definition: maglev-ir.h:2044
std::unique_ptr< ValueMirror > value
Definition: value-mirror.cc:996
wasm::ValueType type
Definition: wasm-inlining-into-js.cc:31